2010-12-11 12 views
1

これは幾分簡単な質問ですが、私はSOとLINQ to XMLチュートリアルの回答を見てもそれを動作させることができませんでした。私はWindows Phone 7を使用していますが、違いがあるとは思いません。私は、XMLは上記のXElementにロードされていWP7 LinqからXMLへのXElementの子要素を取得するために

<response xmlns="http://anamespace.com/stuff/"> 
    <error code="ERROR_CODE_1">You have a type 1 error</error> 
</response> 

は、私はこのようなXMLを持っています。私は "エラー"ノードを取得したい。 This questionは、名前空間を処理する必要があると言います。私は名前空間の有無にかかわらずクエリを試みましたが、どちらの方法でも動作しません。名前空間と

問合せ:

private object ParseElement(XElement responseElement) 
{ 
    XNamespace ns = "http://anamespace.com/stuff/"; 
    IEnumerable<XElement> errorNodes = from e in responseElement.Elements(ns + "error") select e; 
} 

名前空間を持たないクエリ:

private object ParseElement(XElement responseElement) 
{ 
    IEnumerable<XElement> errorNodes = from e in responseElement.Elements("error") select e; 
} 

errorNodes変数はXElements移入れることは決してありません。私が読んだチュートリアルでは、要素を名前で選択するためにこの表記法を使用していますが、私にとってはうまくいきません。私のマシン ™で動作します

答えて

1

このコード:

XElement response = XElement.Parse(
@"<response xmlns=""http://anamespace.com/stuff/""> 
    <error code=""ERROR_CODE_1"">You have a type 1 error</error> 
</response>"); 

XNamespace ns = "http://anamespace.com/stuff/"; 

XElement error = response.Element(ns + "error"); 

string code = (string)error.Attribute("code"); 
string message = (string)error; 

Console.WriteLine(code); 
Console.WriteLine(message); 

私のマシンは、しかし、通常の.NET 4を実行しているので、多分あなたはこのコードを実行すると、それはWP7のために働くかどうかを確認することができます。

+0

どうもありがとう – CACuzcatlan

0

errorの代わりに文書全体を読むことができますか?

Elementsの代わりにDescendantsを使用すると機能しますか?

[TestMethod] 
public void CanGetErrorElements() 
{ 
    string xml = @" 
<response xmlns=""http://anamespace.com/stuff""> 
<error code=""ERROR_CODE_1"">You have a type 1 error</error> 
</response>"; 
    XDocument doc = XDocument.Parse(xml); 
    XNamespace ns = "http://anamespace.com/stuff"; 
    var errorNodes = from e in doc.Descendants(ns + "error") 
        select e; 
    Assert.IsTrue(errorNodes.Count() > 0); 
} 
関連する問題