【问题标题】:Using LINQ to pull XML elements使用 LINQ 提取 XML 元素
【发布时间】:2012-12-06 09:42:54
【问题描述】:

是否可以使用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

【问题讨论】:

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


    【解决方案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)
    

    【讨论】:

    • 谢谢,我会试一试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    相关资源
    最近更新 更多