在XMLDocument中将所有标记名称更改为小写

时间:2019-05-15 03:10:15

标签: c# xml

我需要将所有标签名称更改为小写,但保留InnerText或Value不变。我刚刚找到了显示如何更改整个文档(而不只是标签名称)大小写的线程。

代码

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlDoc.OuterXml.ToLower());

2 个答案:

答案 0 :(得分:1)

Original.xml

<?xml version="1.0" encoding="utf-8" ?>
<ROOT>
  <InNeRtAg>SoMe TeXt</InNeRtAg>
  <NeStEdElEmEnT>
    <InNeRnEsTiNg>SoMe TeXt</InNeRnEsTiNg>
  </NeStEdElEmEnT>
</ROOT>

更改 ALL 个节点,包括根元素:

var doc = XDocument.Load("Original.xml");

// also need to change the root element
doc.Root.Name = doc.Root.Name.LocalName.ToLower();

foreach (var element in doc.Descendants().Elements())
{
    element.Name = element.Name.LocalName.ToLower();
}

doc.Save("Modified.xml");

Modified.xml

中的结果
<?xml version="1.0" encoding="utf-8"?>
<root>
  <innertag>SoMe TeXt</innertag>
  <nestedelement>
    <innernesting>SoMe TeXt</innernesting>
  </nestedelement>
</root>

使用时

foreach (var element in doc.Descendants().Elements())
{
    element.Name = element.Name.LocalName.ToLower();
}

根元素不会更改。

<?xml version="1.0" encoding="utf-8"?>
<ROOT>
  <innertag>SoMe TeXt</innertag>
  <nestedelement>
    <innernesting>SoMe TeXt</innernesting>
  </nestedelement>
</ROOT>

答案 1 :(得分:0)

您可以尝试以下操作:

var doc = XDocument.Load(filepath);
foreach (var element in doc.Descendants().Elements())
{
    element.Name = element.Name.LocalName.ToLower();
}