我使用的是VB 2008,我試圖將xmlns =「mynamespace」屬性添加到XDocument的根元素。將XML名稱空間屬性添加到第三方XML?
XML文檔是由第三方創建的,我已將它加載到VB XDocument對象中。事實上,它沒有命名空間。我一直在研究本地副本,並在文本編輯器中添加到命名空間中,以便我可以使用VB中的XMLToSchema來啓用智能感知等,如Beth Massi vids中的說明MSDN。現在剩下的代碼工作了,我想再次打開活動文檔。沒有名稱空間,我的XML文字不能解析。
我已經嘗試使用幾種方法將XMLNS屬性添加到根標記中,並且最近我得到了以下三個代碼示例。
Dim myNS As XNamespace = "urn:nbf:namespacename"
myXML.Element("nameofrootelement").Add(myNS)
^^^^命名空間作爲根元素的值添加,而不是作爲屬性添加。
XML.Root.Add(New XAttribute("xmlns", "name"))
^^^^生成的錯誤:運行時拋出異常信息:System.Xml.XmlException - 前綴「」一樣開始元素標記中「無法從被重新定義」到「名」。
但
XML.Root.Add(New XAttribute("test", "name"))
^^^^正常工作。據推測,它不喜歡我手動嘗試設置保留屬性?從我做的一些Google搜索中,這個命名空間似乎太複雜了。
我該如何解決這個問題? :D
謝謝!
更新
感謝安東尼。
我想我需要更好地理解命名空間。
我以爲。那麼吧,然後修改。 Parse
它也是,但我想要一個更好的解決方案,以便它能幫助我更好地理解它!儘管我確實嘗試了這一點,正如您正確指出的那樣,它也會影響所有後代,因此它仍然會中斷。
我將使用所有由不同第三方生成的多個XML源,我認爲爲了簡單起見,我將完全忽略命名空間!
我自己的自定義分析功能會將第三方源重寫爲一個統一文檔,然後由另一個例程處理。我將能夠將ns添加到XML的中間部分,這將有助於對輔助函數進行編碼。
謝謝!