string myTagData = "一些有效的xml数据";
我想编写 LINQ to XML 查询,它可以将 XML1 和 XML2 转换为结果 XML1 和结果 XML2 ,如果存在 abc 标签,则插入 myTagData 的内容作为 abc 标签的最后一个子标签,否则如果abc 标签不存在添加 myTagData 内容作为根元素的最后一个子元素。
XML1
<data>
<abc>
<tag1></tag1>
<tag2></tag2>
</abc>
</data>
XML2
<data>
<data>
<cde>
</cde>
<xyz>
</xyz>
</data>
结果 xml 1
<data>
<abc>
<tag1></tag1>
<tag2></tag2>
<myTag></myTag>
</abc>
<bcd>
</bcd>
</data>
结果 XML2
<data>
<cde>
</cde>
<xyz>
</xyz>
<myTag></myTag>
</data>
最佳答案
这很简单。假设你有一个变量 data
代表<data>
元素,和 myTagData
是您要添加的元素:
XContainer whereToAdd = data.Element("abc") ?? (XContainer) data;
whereToAdd.Add(myTagData);
这是使用空合并运算符作为在两个选项之间切换的简单方法...因为 Element
如果请求的元素不存在,方法返回 null。如果您对空合并运算符不满意,您可能会发现它更容易理解:
XElement abc = data.Element("abc");
if (abc != null)
{
abc.Add(myTagData);
}
else
{
data.Add(myTagData);
}
不过我个人引用的是简明版本:)
关于c# - 使用 LINQ 在 XML 中的特定位置插入特定的 XElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642980/