2012-12-06 161 views
0

是否有可能使用LINQ從父元素提取子元素,例如:使用LINQ to XML拉元素

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「選擇*從文件WHERE名=哈里森」(我知道這不會作爲MySql不會查詢xml,但你明白我的意思)

TIA

回答

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) 
+0

謝謝,我會給一個去。 – Qu1nncunxIV