字符串myTagData =“一些有效的xml数据”;
我想编写将XML1和XML2转换为结果XML1和结果XML2的LINQ to XML查询,如果存在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);
这是使用null-coalescing运算符作为在两个选项之间进行切换的简便方法...因为如果请求的元素不存在,
Element
方法将返回null。如果您对null运算符不满意,则可能会更容易理解:XElement abc = data.Element("abc");
if (abc != null)
{
abc.Add(myTagData);
}
else
{
data.Add(myTagData);
}
我个人还是指简洁的版本:)