使用C#将命名空间添加到特定节点

时间:2015-05-27 04:42:08

标签: c# xml xml-namespaces

我有一个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#中完成它?

1 个答案:

答案 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();
}