2012-04-18 29 views
1

我不知道太多关于这个问题,所以我愿意接受,导致我的最终目标有什么建议?负载字符串LINQ类和查询它

  1. 我收到一个XML字符串从一个Web服务
  2. 我想加载到一个C#类能够用于LINQ的字符串
  3. 我想能够提取一个数组的所有“someentity”实例使用LINQ XML那个班。

这是我与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 你应该能够去序列化成一个多维的对象图 - 然后坚果! – 2012-04-18 16:33:36

+1

这个答案让我想哭的原因有很多:p。 – 2012-04-18 16:35:51

回答

2

你可以这样说:

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 2012-04-18 16:46:01

+0

使用复制粘贴,你是一个传奇;)乍一看,LINQ是令人惊讶的混淆,哈哈。 – 2012-04-18 16:50:29