访问xml节点值

时间:2015-12-19 11:22:34

标签: c# .net xml

我有像

这样的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));

但这不起作用

1 个答案:

答案 0 :(得分:4)

SelectWhere和其他LINQ方法返回IEnumerable(就像集合一样),而不是单个项目。

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

但是既然你确定只有一个项目,你可以像这样得到第一个项目(通过 the First() method):

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);