2016-05-17 36 views
1

我想從包含命名空間前綴的XML字符串加載XElement。例如:從沒有命名空間的字符串中加載XElement

string template = @"<com:PersonName> 
    <com:FirstName>def</com:FirstName> 
     <com:LastName>abc</com:LastName> 
    </com:PersonName>"; 

在上述XML COM是指像xmlns:com = "somevalue" 當我使用XElement.Parse(xml)方法它引發的錯誤的命名空間。

我也嘗試在XmlDocument中加載這樣的XML,它允許我使用xmlreader實現此目的並將命名空間設置爲關閉,但我想使用XDocuemnt或XElement來完成此操作。

是否可以在不提供名稱空間的情況下在Xelement中加載此字符串?

回答

2

最終,您必須爲前綴提供一個名稱空間,否則您將無法將其解析爲XElement。解決這個問題的一種方法是在字符串中添加一個名稱空間定義的虛擬根元素並對其進行解析。然後從解析的節點獲取子元素。

var template = @"<com:PersonName> 
<com:FirstName>def</com:FirstName> 
    <com:LastName>abc</com:LastName> 
</com:PersonName>"; 
var fixedTemplate = $"<root xmlns:com=\"somevalue\">{template}</root>"; 
var element = XElement.Parse(fixedTemplate).Elements().Single(); 
相關問題