访问xml节点值

本文关键字:节点 xml 访问 | 更新日期: 2023-09-27 18:27:20

我有类似的xml文件

<House>
   <Name>some name</Name>
   <Price>22223</Price>
</House>

我正在使用XElement加载文件,并选择它的元素

XElement elem = XElement.Load(fileName);
var houseElements = from h in elem.Elements() select h;

问题是:如何访问该文件中每个元素中的值我试过

model.Name = houseElements.Where(x => x.Name == "Name").Select(x => x.Value).ToString();
model.Price= Convert.ToInt16(houseElements.Where(x => x.Name == "Price").Select(x => x.Value));

但这不起作用

访问xml节点值

SelectWhere和其他LINQ方法返回一个IEnumerable(类似于集合),而不是单个项。

原因是可能有许多项目具有指定的名称。

但是,由于您确信有一个项目,您可以获得第一个项目(通过First()方法),如下所示:

var Name =
    houseElements
    .Where(x => x.Name == "Name")
    .Select(x => x.Value)
    .First();
var Price =
    Convert.ToInt16(
        houseElements
        .Where(x => x.Name == "Price")
        .Select(x => x.Value)
        .First());

这里有一个更好的代码版本:

var Name =
    houseElements
    .Elements("Name")
    .First()
    .Value;
var Price =
    Convert.ToInt16(
        houseElements
        .Elements("Price")
        .First()
        .Value);