1

我对这个主题还不太了解,所以我愿意接受任何导致我最终目标的建议......

  1. 我从 Web 服务收到一个 XML 字符串
  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>

这是否可能,如果可以,有人可以提供一个简单的例子或指导我到正确的地方找到一个吗?

4

2 回答 2

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")
    );
}
于 2012-04-18T16:35:49.307 回答
1

The class you're looking for here is XDocument

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

You can create an XDocument from an XML String using it's Parse() method and then use LINQ to query that document.

Here's an article that demos its LINQ Capabilities

http://broadcast.oreilly.com/2010/10/understanding-c-simple-linq-to.html

于 2012-04-18T16:44:49.983 回答