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建议。 –