2011-12-27 4 views
0

を見つけていない、完全に間違っている私はこのようになります非常に基本的なXMLファイルを持っている:値は子ノードに

<allData> 
    <allDataDetails> 
    <quoteid>ABC123</quoteid> 
    <customername>John Smith</customername> 
    </allDataDetails> 
    <allDataDetails> 
    <quoteid>DEF456</quoteid> 
    <customername>Jane Doe</customername> 
    </allDataDetails> 
</allData> 

を私のXSDは、少なくとも1 allDataDetails要素が存在しなければならないことを指定します。ドキュメントは正当なものであると検証されています。

LinqをXMLにクエリすると、私はallData内の内部要素を認識または照会することができないようです。代わりに、デバッガで表示すると、Value属性は連結されたすべてのデータです。それは次のようになります:

ABC123John SmithDEF456Jane Doe 

私のクエリコードです。

XDocument entityXml = XDocument.Parse(myDataString); 

var myRows = from d in entityXml.Descendants("allDataDetails") 
      select new 
      { 
       quoteid = d.Element("quoteid").Value, 
       customername = d.Element("customername").Value 
      }; 

誰もがここで間違っている可能性が知っている:私は子孫を得るように見えることができないのでmyRowsは、常にnullですか?

+0

XSDがこれを検証したのは非常に奇妙です。「」タグは正しく閉じられていません。.....閉じるタグは、開始タグと一致しない「」です..... –

+0

XML 'select new {}'の2つの代入の間のコンマが足りなくなっていて、結果はOKです。 2つのノードが適切に選択され、適切なデータが抽出されます。最終的にはあなたの問題は何ですか?!?!?!?! –

+0

オリジナルのエントリを編集する最後の人がタイプミスをしました。 –

答えて

1

ちょうどあなたのサンプルコードを実行し、いくつかの構文エラーが修正されました: また、顧客名の値のカンマが間違っていました。下のバージョンを試してみてください。

string myDataString = @"<allData> 
          <allDataDetails> 
          <quoteid>ABC123</quoteid> 
          <customername>John Smith</customername> 

          </allDataDetails> 
          <allDataDetails> 
          <quoteid>DEF456</quoteid> 
          <customername>Jane Doe</customername> 

          </allDataDetails> 
         </allData>"; 
      XDocument entityXml = XDocument.Parse(myDataString); 


      var myRows = from d in entityXml.Descendants("allDataDetails") 
         select new 
         { 
          quoteid = d.Element("quoteid").Value 
          ,customername = d.Element("customername").Value 
         }; 
      foreach (var rw in myRows) 
       Console.WriteLine(rw.customername + "\t" + rw.quoteid); 
+0

私はまだ問題があります。私の最後に、私は、デバッガでentityXmlのプロパティを表示すると、それらは常に間違っています。私は、XmlDocumentオブジェクトにファイルをロードし、メソッドのthatsに動作する文字列としてOuterXml値を渡しています。私のローカルのウィンドウのスクリーンショットです。 http://screencast.com/t/nbkYm6gA - 何らかの理由でRootが文字列全体であり、すべての値が連結されていることがわかります。 –

+1

私はmarc_sとまったく同じ結果を持ち、コードに問題はありません。 Marc_Sは正しいです、myRows変数を見てください。 –

+0

'd.Element(" customername ")。Value'の後ろにカンマがあります。 –

2

私は、あなたの地元の人々のウィンドウで間違った変数でを探しているという印象を持っている - あなたは全体XDocumentを見ていると、それは.Value財産です確かに、すべてのノードを連結した文字列のようなものになります値.....

しかし、あなたが本当にMyRows変数でになります - あなたは本当にあなたが投稿したコードを実行している場合、あなたはこの表示されます

を0(full picture here

あなたが探している/期待しているものはありませんか?

関連する問題