How to remove closing tag of an XmlDocument in C#,

2019-08-27 19:55发布

How can I remove the closing tag of element c in a XML document?

The converted XML will go through a schema validation and it is rejected because it has a whitespace within. I'm using C#, .NET 1.1 (I'm updating a legacy application :-( ).

Note: I must not resort to string manipulation to convert the XML document.

Current:

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

Final:

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

Update 1: for additional details, the final XML document is saved as file, and then another process validates the file. It appears that the saved XML is formatted.

I'm not sure if this is true:

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

2条回答
趁早两清
2楼-- · 2019-08-27 20:06

Try this:

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();
查看更多
倾城 Initia
3楼-- · 2019-08-27 20:16

Maybe setting InnerText to null instead of string.Empty would help?

Update. Or just set XmlElement.IsEmpty )

查看更多
登录 后发表回答