2016-05-17 5 views
1

名前空間のプレフィックスを含むXML文字列からXElementをロードします。例:上記のXML COMでは名前空間のない文字列からXElementをロード

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

は、私はそれがエラーをスローXElement.Parse(xml)方法を使用xmlns:com = "somevalue" ような名前空間を指します。

このようなXMLをXmlDocumentに読み込もうとしましたが、xmlreaderを使用してこれを実現し、名前空間をオフにできますが、XDocuemntまたはXElementを使用して行いたいと思います。

名前空間を提供せずにこの文字列をXelementに読み込むことはできますか?

答えて

2

最終的には、接頭辞の名前空間を指定する必要があります。そうでなければ、XElementに解析することはできません。これを回避する方法の1つは、名前空間定義を持つダミーのルート要素を文字列に追加して解析することです。次に、解析されたノードから子要素を取得します。

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(); 
関連する問題