如何将简单查询写入XElement?

时间:2012-09-10 15:23:25

标签: c# linq-to-xml

第一次尝试将Linq用于XML并遇到一些问题。我有这个XML文件需要读取并用于各种任务。该文件包含一个名为“interfaces”的实体列表。首先,我想显示这些接口的名称列表。

这是XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<InterfaceList>
  <Interface>
    <InterfaceName>Account Lookup</InterfaceName>
    <RequestXSD>ALREQ.xsd</RequestXSD>
    <ResponseXSD>ALRES.xsd</ResponseXSD>
  </Interface>
  <Interface>
    <InterfaceName>Balance Inquiry</InterfaceName>
    <RequestXSD>BIREQ.xsd</RequestXSD>
    <ResponseXSD>BIRES.xsd</ResponseXSD>
  </Interface>
</InterfaceList>

以下是查询代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace Stub {
    public class InterfaceList : XElement {

        public void GetInterfaceNameList() {
            var v = from interface in this.Elements("Interface")
                select interface.Element("InterfaceName").Value;
        }
    }
}

这个想法是从文件加载InterfaceList,然后用它来查询我可能需要的任何东西。 问题是我收到查询中所有内容的错误消息。这里有几个:

  • 错误14当前上下文中不存在名称“from”
  • 错误15找不到类型或命名空间名称“select”(是 你错过了using指令或程序集引用?) 错误
  • 错误16'System.Xml.Linq.XElement.Value'是'属性'但是被使用 喜欢'类型'

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

如果你想调用变量'interface'(这是一个保留字),你需要将其转义,如下所示:

var v = from @interface in this.Elements("Interface")
        select @interface.Element("InterfaceName").Value;

可能更好地重命名它......