내가 같은 형식으로 XML을 원하는 :C# .NET에서 XmlWriter를 사용하여 XML 서식을 지정하는 방법은 무엇입니까?
<?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'로 동일한 시작 요소 태그 내에서 재정의 할 수 없습니다." 원치 않는 attibutes이 의 xmlns 있습니다
<?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>
: AC = "XMLNS"요소 '홈페이지', 의 xmlns : 위의 코드와 같이 내가 같은 출력을 가지고로
그래서, 그 라인을 commment HD1을 = "xmlns"in 'd1 : Header'이고
xmlns : iaiabc = "xmlns"in 'abc : FirstElement'.
원하지 않는 속성을 제거하고 출력을 최상위 형식으로 가져 오려면 무엇을해야하는지 친절하게 제안합니다.
저는 XmlWriter를 처음 사용합니다.
예, WriteStartElement를 잘못 사용했습니다. Jamie 감사합니다, 저를 위해서 일합니다. – Ranzan
다행히 듣고 다행입니다. 이것이 당신이 필요로하는 모든 것을 다뤘다 고 생각한다면. 이것을 대답으로 받아 들여야합니다. – JamieSee