2012-04-18 2 views
1

を照会...ロードLINQクラスへの文字列と私はまだこのテーマについてはあまり知らないので、私は私の最終目標につながる任意の提案に開いていることに

  1. 私は、XMLを受け取ります文字列をWebサービスから返す
  2. LINQに使用できるC#クラスに文字列をロードしたい
  3. LINQを使用してXMLのすべての「someentity」インスタンスの配列を抽出したいと思いますそのクラス。

ここで私はsomeentity例で構成されたいくつかのサンプルXMLです:

<replydata> 
    <someentity> 
     <role id="1234" roletype="2" /> 
     <history length="24" accessstr="http://someurl" /> 
    </someentity> 
    <someentity> 
     <role id="1235" roletype="2" /> 
     <history length="30" accessstr="http://someurl2" /> 
    </someentity> 
    ... keep repeating for a while 
</replydata> 

が可能これは、もしそうなら、誰かが簡単な例を提供したり、ものを見つけるために適切な場所に私を指示することができますか?

+1

http://stackoverflow.com/questions/364253/how-to-deserialize-xml-documentあなたはデすることができるはずです 多次元のオブジェクトグラフにシリアル化してから、ナットを実行してください! –

+1

その答えは、私が非常に多くの理由で泣きたいと思っています。 –

答えて

2

あなたはこのようにそれを行うことができます:あなたがここに探しているクラスは、あなたがそれはParse()方法です使用してXML文字列からXDocumentを作成することができますXDocument

http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

ある

var responseString = 
    @"<replydata> 
     <someentity> 
      <role id=""1234"" roletype=""2"" /> 
      <history length=""24"" accessstr=""http://someurl"" /> 
     </someentity> 
     <someentity> 
      <role id=""1235"" roletype=""2"" /> 
      <history length=""30"" accessstr=""http://someurl2"" /> 
     </someentity> 
    </replydata>"; 
var response = XElement.Load(new StringReader(responseString)); 
var someentitys = response.Elements("someentity"); 
foreach(var e in someentitys) { 
    Console.WriteLine(
     "Role: {0}, access: {1}" 
    , e.Element("role").Attribute("roletype") 
    , e.Element("history").Attribute("accessstr") 
    ); 
} 
+0

@downvoter私は、このコードで何が間違っていると思いますか:それは完璧に動作し、期待される行を印刷します。何を与えるのですか?... – dasblinkenlight

+0

コピーペーストで動作します、あなたは伝説です;)LINQは一見すると驚くほど混乱します。 –

関連する問題