重写XMLDocument以使用名称空间前缀

问题描述 投票:1回答:3

我有一个XMLDocument,当我保存到文件中时,它在大多数元素上都重复一个名称空间,如[]中所示>

<Test>
    <Test xmlns="http://example.com/schema1">

      <Name xmlns="http://example.com/schema2">xyz</Name>
      <AddressInfo xmlns="http://example.com/schema2">
        <Address>address</Address>
        <ZipCode>zzzz</ZipCode>
      </AddressInfo>
       ...

是否可以修改此文件,使其在整个文档中使用名称空间前缀,即类似的东西>

<Test xmlns="http://example.com/schema1" xmlns:p="http://example.com/schema2"  >

 <p:Name>xyz</p:Name>
 <p:AddressInfo">
   <p:Address>address</p:Address>
   <p:ZipCode>zzzz</p:ZipCode>
 </p:AddressInfo>        
 ...

我尝试添加

   doc.DocumentElement.SetAttribute("xmlns:p", "http://example.com/schema2");

但是在此将名称空间添加到标题的同时,文件的主体保持不变。

我有一个XMLDocument,当我保存到文件时,它会在大多数元素上重复一个名称空间,如

c# xml xml-namespaces
3个回答
1
投票

您可以简单地change XmlElement.Prefix property value

XmlElement.Prefix

1
投票

使用LINQ to XML的一种方法是将名称空间声明添加到根目录中,然后删除所有现有的名称空间声明,例如:


0
投票

我找到了这个问题,它解决了我试图解决的问题,但是我需要一个更通用的解决方案,因此我在下面开发了扩展方法。它的灵感来自查尔斯·马格(Charles Mager)的答案,但是正如您所看到的,它远远超出了这个范围。说实话,我很后悔陷入了这个问题,因为要弄清楚这是一件很痛苦的事,但其他人可能会从中受益。

© www.soinside.com 2019 - 2024. All rights reserved.