猿问

在 C# 中的现有 XDocument 中添加 Xelement

我有包含详细信息的 XML。我想复制整个节点并创建具有完全相同属性的<Details>更新节点。<Details>


我的 XML 看起来像这样:


<root>        

    <Details>

        <A.EMPLID>0000177008</A.EMPLID>

            <G.LAST_NAME>Huziak-Clark</G.LAST_NAME>

            <G.FIRST_NAME>Tracy</G.FIRST_NAME>      

    </Details>      

</root>

我想创建一个像这样的新节点


<root>        

    <Details>

            <A.EMPLID>0000177008</A.EMPLID>

            <G.LAST_NAME>Huziak-Clark</G.LAST_NAME>

            <G.FIRST_NAME>Tracy</G.FIRST_NAME>      

    </Details>  

    <Newdetails>

        <Details>

            <A.EMPLID>0000177008</A.EMPLID>

            <G.LAST_NAME>Huziak-Clark</G.LAST_NAME>

            <G.FIRST_NAME>Tracy</G.FIRST_NAME>      

        </Details>  

    </Newdetails>

</root>

我已经XElement这样使用了,但它只是添加<NewDeatils/>节点XDocument而不是剩余节点。


foreach(XElement e in XDocument.Descendants("Details"))

{

     XDocument.Root.Element.Add("NewDetails",XElement("Deatils");

}

如何选择整个XElement并将其附加到<Newdetails>节点下?


慕沐林林
浏览 173回答 1
1回答

莫回无

首先,加载文件并获取所有Descendants名为“Details”的文件。var file = @"XMLFile.xml";var doc = XDocument.Load(file);var details = doc.Root.Descendants().Where(x => x.Name == "Details");这为您提供了一组节点Details,在您的示例文件中只有一个。然后我会迭代它们,并为每个元素创建一个新的XElemen命名元素NewDetails并将现有元素添加为子元素。请注意,这里我得到了details.Count()循环之前的值并将其用作限制。如果你这样做了foreach,这将变成无限循环,所以要小心。var count = details.Count();for (var i = 0; i < count; i++){&nbsp; &nbsp; var newDetails = new XElement("NewDetails");&nbsp; &nbsp; newDetails.Add(details);&nbsp; &nbsp; doc.Root.Add(newDetails);}保存以确认结果。var fileNew = @"XMLFile2.xml";doc.Save(fileNew);这是添加节点之前和之后的文件:前:后:
随时随地看视频慕课网APP
我要回答