0
我使用的XmlWriter使用有效的XML文件作爲我的模板建立一些XML。在該文件中,我有這行:<ds:Signature>
的XmlWriter無效冒號
所以,我在C#這樣做: writer.WriteStartElement("ds:Signature");
但它給我的無效字符0x3A,這是一個冒號的一個錯誤。有沒有一種方法可以讓我使用XmlWriter構建這一行xml?
我使用的XmlWriter使用有效的XML文件作爲我的模板建立一些XML。在該文件中,我有這行:<ds:Signature>
的XmlWriter無效冒號
所以,我在C#這樣做: writer.WriteStartElement("ds:Signature");
但它給我的無效字符0x3A,這是一個冒號的一個錯誤。有沒有一種方法可以讓我使用XmlWriter構建這一行xml?
在你的榜樣,「DS」是指XML命名空間,並在正確的XML你不能沒有它聲明使用它,無論是在節點或其祖先之一,早在文件中。
XmlWriter
知道命名空間,迫使你創建正確的XML。它會在您使用它們時記住名稱空間。
這意味着,你可以做到以下幾點:
using (var x = XmlWriter.Create("test.xml"))
{
x.WriteStartElement("ds", "ParentNode", "namespace");
x.WriteStartElement("ds", "Signature", "namespace");
x.WriteEndElement();
x.WriteEndElement();
x.Flush();
x.Close();
}
這將產生如下:
<?xml version="1.0" encoding="utf-8"?>
<ds:ParentNode xmlns:ds="namespace">
<ds:Signature />
</ds:ParentNode>
這告訴別人讀取「ParentNode」和「簽名」中定義的XML名稱空間「名稱空間」,該名稱空間由xmlns:ds="namespace"
屬性指定了前綴「ds」。
這是非常有用的,但是如果你想要的東西簡單,只是想和你吐出的文字,我會說只是用一種StreamWriter
:
using (var s = new StreamWriter("test.xml"))
{
s.WriteLine("<ds:Signature>");
s.Flush();
s.Close();
}
謝謝你一個正確的答案,另外的StreamWriter建議。 –