<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<top>
<item description="book">
<cost>250</cost>
</item>
<item description="car">
<cost>501</cost>
</item>
<item description="house">
<cost>700</cost>
</item>
</top>
===========
我想要做的是搜索“cost”值为500或更高的节点,如果是这种情况,请抓住“item”描述并将描述分配给变量x1,将成本分配给y1(递增变量)。
因此,最终结果应该返回..
x1 = 501 y1 =汽车
x2 = 750 y2 =房子
如果可能,我想使用Xpath或类似方法在C#中维护它。
答案 0 :(得分:3)
LINQ to XML救援!
XDocument doc = XDocument.Load(@"test.xml");
var items = doc.Descendants("cost")
.Where(c => Convert.ToInt32(c.Value) >= 500)
.Select(c => new { x = c.Value, y = c.Parent.Attribute("description").Value })
.ToList();
答案 1 :(得分:1)
使用LINQ to XML:
XDocument doc = ...;
var query = from e in doc.Descendants("item")
let cost = Convert.ToInt32(e.Value)
where cost >= 500
select new
{
x = cost,
y = e.Attribute("description").Value
};
或者与XPath结合使用:
XDocument doc = ...;
var query = doc.XPathSelectElements("/*/item[cost >= 500]")
.Select(e => new
{
x = Convert.ToInt32(e.Value),
y = e.Attribute("description").Value
});