C# 转换Xml标记
在my xml中,一些xml元素为空,例如:C# 转换Xml标记,c#,visual-studio,C#,Visual Studio,在my xml中,一些xml元素为空,例如: <A></A> 因此,我想修改上面所示类型的元素,将其转换为类型元素,那么我们如何在C#中进行转换,并在文件中进行更新。以下是我的想法: private static void FormatEmptyNodes(XmlNode rootNode) { foreach (XmlNode childNode in rootNode.ChildNodes) { FormatEmptyNodes(
<A></A>
因此,我想修改上面所示类型的元素,将其转换为
类型元素,那么我们如何在C#中进行转换,并在文件中进行更新。以下是我的想法:
private static void FormatEmptyNodes(XmlNode rootNode)
{
foreach (XmlNode childNode in rootNode.ChildNodes)
{
FormatEmptyNodes(childNode);
if(childNode is XmlElement)
{
XmlElement element = (XmlElement) childNode;
if (string.IsNullOrEmpty(element.InnerText)) element.IsEmpty = true;
}
}
}
然后像这样使用它:
var doc = new XmlDocument();
doc.Load(inputFilePath);
FormatEmptyNodes(doc);
doc.Save(outputFilePath);
而在您的场景中,您可以使用它来使用模式
清理传入字符串,并替换
:
System.Text.RegularExpressions.Regex.Replace(
“foo”:
将
转换为
的原因是什么?从任何xml解析器的角度来看,语法都没有区别-那么为什么还要麻烦呢?在C#中解析xml文件时,可以将标记标识为IsEmptyElement方法,但不能使用XmlReader类和中的IsEmptyElement方法来标识标记xml中的一些空元素将表示为,一些表示为。因此,为了维护单个结构,我们希望将空标记转换为,例如to。因此,如果任何新用户正在阅读,他们将看到唯一的结构,可能是
System.Text.RegularExpressions.Regex.Replace(
"foo <a></a> bar <a>not empty</a> <tag></tag>",
"<([A-Za-z0-9_.]+)></\\1>",
"<$1/>")
foo <a/> bar <a>not empty</a> <tag/>