我正在做的是我有2个XML模板,用于快速创建XML文档。我首先替换模板#2中的数据,然后将其用于替换模板#1中的元素。我可以成功替换,但是我插入模板#1的节点有一个延迟的emtpy xmlns。
例如:
模板1
<root xmlns="namespace">
<Replace/>
</root>
则Template2
<Replace>
<child/>
</Replace>
我的最终结果是:
<root xmlns="namespace">
<Replace xmlns="">
<child/>
</Replace>
</root>
如果我在模板#2中包含相同的命名空间,我最终得到这个:
<root xmlns="namespace">
<Replace xmlns="namespace">
<child/>
</Replace>
</root>
这是我的代码:
Imports <xmlns:ns="namespace">
Dim xDoc As XDocument = XDocument.Load("Template1.xml")
Dim replaceDoc As XDocument = XDocument.Load("Template2.xml")
Dim x = From elem As XElement In xDoc.<ns:root>.<ns:Replace>.First
x.ReplaceWith(replaceDoc.Elements)
xDoc.Save("Final.xml")
我希望只有root元素才能包含命名空间。知道如何解决这个问题吗?
答案 0 :(得分:1)
如果我们使用您的第二个变体(您希望Replace
位于namespace
并且在模板中有此变体),那么最后一行应该是:
xDoc.Save("Final.xml",SaveOptions.OmitDuplicateNamespaces)