C# 使用 XmlWriter 编写 “d3p1:string” 元素

本文关键字:string 元素 d3p1 使用 XmlWriter 编写 | 更新日期: 2023-09-27 18:27:52

<Messages xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:string>sample string 1</d3p1:string>
      <d3p1:string>sample string 2</d3p1:string>
    </Messages>

有了XmlWriter,我想写这个XML

法典:

writer.WriteStartElement("Messages");
writer.WriteAttributeString("xmlns", "d3p1", null, "http://schemas.microsoft.com/2003/10/Serialization/Arrays");
writer.WriteElementString("d3p1:string", "my message");
writer.WriteEndElement();

问题是

  writer.WriteElementString("d3p1:string", "my message");

无效。

":"字符(十六进制值0x3A(不能包含在 名字。

如何编写d3p1:string xml 标签?

C# 使用 XmlWriter 编写 “d3p1:string” 元素

同时在 WriteElementString 中使用命名空间和前缀:

const string ns = "http://schemas.microsoft.com/2003/10/Serialization/Arrays";
const string prefix = "d3p1";
using(var writer = XmlWriter.Create("file.xml"))
{
    writer.WriteStartElement("Messages");
    writer.WriteAttributeString("xmlns", prefix, null, ns);
    writer.WriteElementString(prefix, "string", ns, "my message");
    writer.WriteEndElement();
}

我也有类似的问题。 我需要写:

<t xml:space="preserve">

这样做的代码是:

writer.WriteAttributeString("xml", "space", "http://www.w3.org/XML/1998/namespace", "preserve")