【问题标题】:Adding an element to this xml structure向此 xml 结构添加元素
【发布时间】:2012-11-30 10:35:26
【问题描述】:
<root>
    <element1>innertext</element1>
    <element2>innertext</element2>
    <element3>
        <child1>innertext</child1>
    </element3>
</root>

我有一个上面显示的 xml 结构。

我想“附加” xml 文件(它已经创建)以在 element3 中添加另一个“子”>,使其看起来像这样:

<root>
    <element1>innertext</element1>
    <element2>innertext</element2>
    <element3>
        <child1>innertext</child1>
        <child2>innertext</child2>
    </element3>
</root>

Linq to xml 和/或 Xpath 会很棒

编辑: 我试过这样做:

XElement doc = XElement.Load(mainDirectory);
XElement newElem = doc.Elements("element3").First();
newElem.Add(new XElement("child2", "child2innertext"));
doc.Add(newElem);
doc.Save(mainDirectory); 

【问题讨论】:

    标签: c# xml xpath linq-to-xml


    【解决方案1】:
    XmlDocument xDoc = new XmlDocument();
            xDoc.Load("filename.xml");
    
            foreach (XmlNode xNode in xDoc.SelectNodes("/root/element3"))
            {
                XmlElement newElement = xDoc.CreateElement("Child2");
    
    
                xNode.AppendChild(newElement);
                xNode.InnerText = "myInnerText";
            }
    

    【讨论】:

      【解决方案2】:

      使用 XDocument,您可以通过以下方式实现:

       string xml = "<root><element1>innertext</element1><element2>innertext</element2><element3><child1>innertext</child1></element3></root>";
      
       var doc = XDocument.Parse(xml); //use XDocument.Load("filepath"); in case if your xml is in a file.
      
       var el3 = doc.Descendants("element3").FirstOrDefault();
      
       el3.Add(new XElement("child2", "innertext"));
      

      【讨论】:

        【解决方案3】:

        请试试这个 LINQPAD 示例

        void Main()
        {
        var xml = 
        @"<root>
                <element1>innertext</element1>
                <element2>innertext</element2>
                <element3>
                    <child1>innertext</child1>
                </element3>
            </root>";
        
            var doc = XDocument.Parse(xml); 
            doc.Root.Element("element3")
            .Add(new XElement("child2", "innertext"));
        
            doc.Dump();
        }
        

        【讨论】:

          猜你喜欢
          • 2015-09-02
          • 1970-01-01
          • 2016-01-20
          • 2015-04-03
          • 2012-12-22
          • 2019-05-26
          • 2018-10-08
          • 1970-01-01
          • 2017-03-11
          相关资源
          最近更新 更多