我有一个XML,XML的一部分如下所示
<ts:mynode1>
<ts:systemId>XXX</ts:systemId>
<ts:sequenceId>YYY</ts:sequenceId>
<ts:/mynode1>
<mynode2>
<systemId>ZZZ</systemId>
<sequenceId>AAA</sequenceId>
</mynode1>
我的目标是将命名空间ts添加到那些没有没有节点空间的节点的节点
有没有办法在C#中完成它?
答案 0 :(得分:1)
使用System.Xml.Linq中的对象可以很容易地完成此操作;特别是 XElement 和 XName 。为了给出一个完全确定的答案,我需要查看XML的其余部分(特别是,当它完全解析时,无论命名空间是什么,还是文档前面指定的xmlns:ts ='http://your/namespace/here'。)但是,如果ts确实解析了上面使用的示例( http://your/namespace/here ),则可以使用以下代码在文档中的每个节点上设置ts命名空间,假设“xml”包含文件XML。
function addNamespaces(string xml){
var doc = System.Xml.Linq.XDocument.Parse(xml);
foreach(var el in doc.Descendants())
el.Name = "{http://your/namespace/here}" + el.Name.LocalName;
return doc.ToString();
}