我在做什麼是我有2個XML模板,我用它來快速創建一個XML文檔。我首先替換模板#2中的數據,然後將用它替換模板#1中的元素。我可以成功替換,但是插入到模板#1中的節點具有延續的emtpy xmlns。防止空xmlns - ReplaceWith()Linq
例如:
模板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")
我想只有根元素包含的命名空間。任何想法如何解決這個問題?
我懷疑這是因爲您將XML視爲文本。不是。命名空間是XML包含的信息的重要部分。如果'Replace'沒有'xmlns =「」',那就意味着它是'namespace'命名空間中的'Replace'元素,而不是任何其他'Replace'元素與其他任何命名空間。如果是這樣,爲什麼它不在模板2中的名稱空間中? –
我嘗試在模板#2中包含相同的名稱空間,因爲它最終將具有與模板#1相同的名稱空間。但是,當我這樣做時,和元素都有名稱空間。 –
jnasty
在這種情況下,應該沒有關係。從信息的角度來看, '和 '包含*完全相同*信息。 –