【问题标题】:Adding Xml Attribute to All elements except root Node将 Xml 属性添加到除根节点之外的所有元素
【发布时间】:2017-02-05 01:48:27
【问题描述】:

我正在尝试在 c# 中向我的 xml 文件添加新属性。我的xml文件格式如下所示:

<Root MessageOfRoot="Welcome to Xml">
    <Header Size="36">
        <Parameter Name="ID" Index="0" Value="23" />
        <Parameter Name="Name" Index="4" Value="Uncle Bob" />
        <Parameter Name="Number" Index="8" Value="4" />
    </Header>
    <Body Size="0">
        <Parameter Index="0" UnitNumber="0" Name="UnitBarcode" Type="Integer" />
        <Parameter Index="4" PromotionId="0" Name="PromotionalUnit" Type="Integer" />
    </Body>
</Root>

我想在我的 xml 文件中添加新属性,应该是这样的:

<Root MessageOfRoot="Welcome to Xml">
    <Header Size="36" NewAttr="1">
        <Parameter Name="ID" Index="0" Value="23" NewAttr="1"/>
        <Parameter Name="Name" Index="4" Value="Uncle Bob" NewAttr="1"/>
        <Parameter Name="Number" Index="8" Value="4" NewAttr="1"/>
    </Header>
    <Body Size="0" NewAttr="1">
        <Parameter Index="0" UnitNumber="0" Name="UnitBarcode" Type="Integer" NewAttr="1"/>
        <Parameter Index="4" PromotionId="0" Name="PromotionalUnit" Type="Integer" NewAttr="1"/>
    </Body>
</Root>

为此,我编写了以下代码,但在将 newAttr 添加到所有节点时遇到问题。如何将 NewAttr 添加到我的新 xml 文件中?

XmlDocument doc = new XmlDocument();
doc.Load("Path of xml");
XmlAttribute NewAttr = doc.CreateAttribute("NewAttr ");
countAttr.Value = "1";
XmlWriter writer = XmlWriter.Create("output.xml", settings);

【问题讨论】:

    标签: c# xml parsing xml-parsing output


    【解决方案1】:

    您可以使用以下命令加载 XML 文件:

    XDocument doc = XDocument.Load(@"C:\Users\myUser\myFile.xml");
    

    然后您可以调用一个函数,该函数从Root 元素的子节点开始递归访问 XML 的所有节点:

    AddNewAttribute(doc.Root.Elements());
    

    函数可以是这样的:

    public static void AddNewAttribute(IEnumerable<XElement> elements)
    {
        foreach (XElement elm in elements)
        {
            elm.Add(new XAttribute("newAttr", 1));
            AddNewAttribute(elm.Elements());
        }
    }
    

    最后,您可以使用以下方法将 XML 保存回原始文件:

    doc.Save(@"C:\Users\myUser\myFile.xml");
    

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 2021-10-24
      • 1970-01-01
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多