1
<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); 
4

3 回答 3

3
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";
        }
于 2012-11-30T10:41:50.027 回答
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"));
于 2012-11-30T10:42:39.460 回答
1

请尝试这个 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();
}
于 2012-11-30T10:42:26.937 回答