【问题标题】:How to remove closing tag of an XmlDocument in C#, .NET 1.1?如何在 C#、.NET 1.1 中删除 XmlDocument 的结束标记?
【发布时间】:2010-01-21 08:49:55
【问题描述】:

如何删除 XML 文档中元素 c 的结束标记?

转换后的 XML 将通过模式验证并被拒绝,因为其中包含空格。我正在使用 C#、.NET 1.1(我正在更新旧版应用程序 :-( )。

注意:我不能通过字符串操作来转换 XML 文档。

当前:

<main>
  <a>
    <b />
    <c>
    </c>
  </a>
</main>

决赛:

<main>
  <a>
    <b />
    <c />
  </a>
</main>

更新 1:有关其他详细信息,将最终的 XML 文档保存为文件,然后另一个进程验证该文件。保存的 XML 似乎已格式化。

我不确定这是不是真的:

<a></a> == <a />

【问题讨论】:

    标签: c# xml .net-1.1 xmldocument


    【解决方案1】:

    试试这个:

    XmlDocument xml = new XmlDocument();
    xml.LoadXml(@"
     <main>
      <a>
        <b />
        <c>
        </c>
      </a>
    </main>");
    
    foreach(XmlElement element in xml.SelectNodes("//*[. = '' and count(*) = 0]"))
    {
        element.IsEmpty = true;
    }
    
    Console.WriteLine(xml.InnerXml);
    Console.ReadLine();
    

    【讨论】:

      【解决方案2】:

      也许将 InnerText 设置为 null 而不是 string.Empty 会有所帮助?

      更新。或者只是设置 XmlElement.IsEmpty )

      【讨论】:

      • 您好,感谢您的回答,但没有解决问题。似乎最终的 xml 文档已格式化,因此添加了空格。我将添加更多关于我遇到的问题的详细信息。
      • 谢谢,它成功了。实际上我使用的是 XmlNode,而不是 XmlElement,因此解决方案并不明显。我已将 c 节点设置为 XmlElement,而不仅仅是 XmlNode。
      • 谢谢。认为 IsEmpty 在您发表评论之前是只读的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      • 2023-01-19
      • 2021-11-25
      相关资源
      最近更新 更多