【问题标题】:C# With XmlWriter write "d3p1:string" elementC# 使用 XmlWriter 编写“d3p1:string”元素
【发布时间】:2015-12-22 10:19:26
【问题描述】:
<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:stringxml标签怎么写?

【问题讨论】:

  • xmlns 不能用 WriteAttributeString 写入,您必须通过命名空间选项添加它。这很可能是它无法为您编写元素的原因。
  • xmlns 工作正常。问题出在 d3p1:string 上。 ':' 字符,十六进制值 0x3A,不能包含在名称中。

标签: c# xml xmlwriter


【解决方案1】:

同样在 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();
}

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我需要写:

    <t xml:space="preserve">
    

    执行此操作的代码是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-11
      相关资源
      最近更新 更多