-4

我有这样的XML格式..

<ROOT>
    <bookstore>
        <Name>XXXXXX</BUNIT>
    </bookstore>
    <book>
        <ID>000000000000001001</ID>
        <title>Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>        
    </book>
    <book>
        <ID>000000000000001002</ID>
        <title>Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>        
    </book>
    <book>
        <ID>000000000000001003</ID>
        <title>Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>        
    </book>
    <book>
        <ID>000000000000001004</ID>
        <title>Everyday Italian</title>
        <author>Giada De Laurentiis</author>
        <year>2005</year>
        <price>30.00</price>        
    </book>
</ROOT>

现在我只想加载没有循环的“ID”书的单个节点。我已经尝试过这样的......我们将通过以下行获得书的完整节点(第一项 id = 000000000000001001)

_nodeList = objxml.SelectSingleNode("//book/") 

但我会给出 ID 来过滤,如下面的代码。

_nodeList = objxml.SelectSingleNode("//book/ID['000000000000001001']")

我需要具有该特定 ID 的完整书籍节点。

4

2 回答 2

4

如果我正确理解了这个问题,您想通过子元素ID值选择一个书本元素吗?

如果是这种情况,您可以使用一个非常简单的 LINQ 查询按 ID 返回 book 节点(假设您首先更正了 XML):

var book = from n in xml.Descendants("ROOT").Elements("book")
                       where n.Element("ID").Value == "000000000000001001"
                       select n;

然后,您可以将值投影到匿名类型并将查询转换为列表以枚举结果:

var book = (from n in xml.Descendants("ROOT").Elements("book")
            where n.Element("ID").Value == "000000000000001001"
            select new
            {
                ID = (string)n.Element("ID").Value,
                Title = (string)n.Element("title").Value,
                Author = (string)n.Element("author").Value,
                Year = (string)n.Element("year").Value,
                Price = (string)n.Element("price").Value
            }).ToList();

这将给出如下输出:

在此处输入图像描述

于 2013-04-18T12:40:25.940 回答
1
var book = onjxml.SelectSingleNode("//ROOT/book[ID='000000000000001003']")
于 2013-04-18T12:49:25.297 回答