使用LINQ来提取XML元素

时间:2012-12-06 09:42:55

标签: xml vb.net linq linq-to-xml

是否可以使用LINQ从父元素中提取子元素,例如:

XML

<?xml version="1.0"?>
<Names>
    <Harrison>
        <preName>Simon</preName>
        <preName>John</preName> 
    </Harrison>
    <Smith>
        <preName>Harvey</preName>
        <preName>Oscar</preName>
    </Smith>
</Names>

VB.NET

private sub query()
    Dim file as string = "C:\SomexmlFile.xml"
    Dim query = From Names In File
                Where Names = Harrison
                Select preName

end sub

这样的事情会起作用吗?是否有任何语法可以选择该子元素的所有preNames,如MySql“Select * FROM file WHERE Name = Harrison”(我知道这不会起作用,因为MySql不会查询xml,但你明白我的意思)

TIA

1 个答案:

答案 0 :(得分:1)

不确定

Dim xml = <Names>
              <Harrison>
                  <preName>Simon</preName>
                  <preName>John</preName> 
              </Harrison>
              <Smith>
                  <preName>Harvey</preName>
                  <preName>Oscar</preName>
              </Smith>
          </Names>

Dim harrisons = from prename in xml.<Harrison>
                from name in prename.<preName>
                select name.Value

harrisons现在包含SimonJohn


另一种方式:

xml.Elements.First(function(e) e.Name = "Harrison").Elements _
            .Select(function(h) h.Value)

或仅使用XPath

xml.XPathSelectElements("Harrison/preName").Select(Function(n) n.Value)