加载IEnumerable <xelement>集合</xelement>

时间:2009-05-08 14:23:20

标签: asp.net xelement

XElement root = XElement.Load(xmlReader);

IEnumerable<XElment> items = root.Elements("?????????");

哪里????是,我可以添加路径,还是必须是单个xml元素名称?

即。我能做/ blah / blah2 / asdf吗?

3 个答案:

答案 0 :(得分:3)

???? 应该是单个xml元素名称。

严格地说,Elements()方法接受XName参数。幸运的是,存在从stringXName的隐式转换。

XName name = "Book";
XName name2 = "{http://schemas.company.com/books}Book"; // XName with a namespace

要选择路径,请使用System.Xml.XPath命名空间(System.Xml.Linq程序集)中的扩展方法:

IEnumerable<XElment> items = root.XPathSelectElements("Books/Author");

答案 1 :(得分:1)

不,Elements扩展方法的参数需要是单个元素名称(实际上是XName,但如果您不需要名称空间,只需将元素名称作为字符串传递),而不是XPath。

如果要使用XPath选择XElements,还有an extension method for that。包括System.Xml.XPath并执行:

IEnumerable<XElement> items = root.XPathSelectElements("your/xpath");

答案 2 :(得分:0)

如果您尝试传递XPath,则会生成此异常:

  

未处理的类型异常   发生'System.Xml.XmlException'   system.xml.dll的

     

其他信息:'/'   字符,十六进制值0x2F,   不能包含在名称中。

您必须将元素名称作为字符串传递。该字符串被隐含地转换为XName类型,该字符对字符串中的字符可以和不可以存在限制(/<>等。)。 / p>