我有包含详细信息的 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>节点下?
1 回答
莫回无
TA贡献1865条经验 获得超7个赞
首先,加载文件并获取所有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++)
{
var newDetails = new XElement("NewDetails");
newDetails.Add(details);
doc.Root.Add(newDetails);
}
保存以确认结果。
var fileNew = @"XMLFile2.xml";
doc.Save(fileNew);
这是添加节点之前和之后的文件:
前:
后:
- 1 回答
- 0 关注
- 172 浏览
添加回答
举报
0/150
提交
取消