Я хочу XML в формате, как:Как форматировать XML с помощью XmlWriter в C# .Net?
<?xml version="1.0" encoding="UTF-8"?>
<ac:Main xmlns:trip="http://www.test.com/main.xsd"
xmlns:abc="http://www.test.com/Types.xsd"
xmlns:tw="http://www.test.com/TW.xsd"
xmlns:ck="http://www.test.com/CK.xsd"
xmlns:k1="http://www.test.com/K1.xsd"
xmlns:d1="http://www.test.com/D1.xsd"
xmlns:ac="http://www.test.com/Ac.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.test.com/Ac.xsd file:/D:/schema/AC.xsd">
<ac:Records>
<d1:Header>
<abc:FirstElement>firstValue</abc:FirstElement>
</d1:Header>
</ac:Records>
</ac:Main>
Итак, я написал код, используя XmlWriter следующим образом:
using (XmlWriter writer = XmlWriter.Create(path, settings))
{
writer.WriteStartElement("ac", "Main", "xmlns");
writer.WriteAttributeString("xmlns", "trip", null, http://www.test.com/main.xsd");
writer.WriteAttributeString("xmlns", "abc", null, http://www.test.com/Types.xsd");
writer.WriteAttributeString("xmlns", "tw", null, http://www.test.com/TW.xsd");
writer.WriteAttributeString("xmlns", "kc", null, "http://www.test.com/CK.xsd");
writer.WriteAttributeString("xmlns", "k1", null, "http://localhost:8080/K1.xsd");
writer.WriteAttributeString("xmlns", "d1", null, "http://localhost:8080/D1.xsd");
writer.WriteAttributeString("xsi","schemaLocation", "http://www.w3.org/2001/XMLSchema-instance", "http://www.test.com/Ac.xsd file:/D:/schema/AC.xsd");
// writer.WriteAttributeString("xmlns", "ac", null, "http://www.test.com/Ac.xsd ");
writer.WriteStartElement("ac", "Records", "xmlns");
writer.WriteStartElement("d1", "Header", "xmlns");
writer.WriteStartElement("abc", "FirstElement", "xmlns");
writer.WriteString("firstValue");
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
}
Но раскомментировав линии writer.WriteAttributeString ("XMLNS", "ас", null, "http://www.test.com/Ac.xsd"); дает ошибку «Префикс« ac »не может быть переопределен с« xmlns »на« http://www.test.com/Ac.xsd »в пределах одного и того же тега элемента запуска».
Итак, я commment эту строку, как показано в коде выше, и я получил выход как:
<?xml version="1.0" encoding="utf-8"?>
<ac:Main
xmlns:wctrp="http://www.test.com/main.xsd"
xmlns:abc="http://www.test.com/Types.xsd"
xmlns:tw="http://www.test.com/TW.xsd"
xmlns:ck="http://www.test.com/CK.xsd"
xmlns:k1="http://www.test.com/K1.xsd"
xmlns:d1="http://www.test.com/D1.xsd"
xmlns:ac="http://www.test.com/Ac.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.test.com/Ac.xsd file:/D:/schema/AC.xsd"
xmlns:ac="xmlns">
<ac:Records>
<d1:Header xmlns:hd1="xmlns">
<abc:FirstElement xmlns:iaiabc="xmlns">firstValue</abc:FirstElement>
</d1:Header>
</ac:Records>
</ac:Main>
Нежелательные атрибуты объявления являются XMLNS: ас = "XMLNS" в элементе 'Main', XMLNS: hd1 = "xmlns" в 'd1: Header' и
xmlns: iaiabc = "xmlns" в 'abc: FirstElement'.
Любой любезно предложите мне, что мне следует сделать, чтобы удалить нежелательные атрибуты и получить выход в верхнем формате.
Я новичок в XmlWriter.
Да, я злоупотреблял WriteStartElement. Спасибо, JamieSee, это работает для меня. – Ranzan
Рад слышать, как это работает для вас. Если вы чувствуете, что это покрыло все, что вам нужно. Пожалуйста, не забудьте принять это как ответ. – JamieSee