使用VBのXMLリテラル:
Dim marker2 = From x In data...<Procedure-Text> _
Where x.<A>[email protected] = "marker2" _
Select x
トリプルドット構文プロデュースXML要素の「すべての子孫」、すなわちdata...<Procedure-Test>
はdata
XML上のドット構文内の<Procedure-Test>
タグのリストを生成しますリテラルは「最初の子孫」を意味するので、x.<A>
はx内に<A>
という最初の出現を生成します。 xのインスタンスは<Procedure-Test>
となりました。希望の<A>
要素があり、そのIDと文字列を比較すると、@attr
属性セレクタで簡単になります。 <A>
タグのID属性はそうx.<A>[email protected]
はそう、「X内の最初の<A>
タグのID属性」を意味
そして、あなたは<Procedure-Text>
要素をしたい「MARKER2」
に等しい場合<A>[email protected] = "marker2"
はTrue
と評価されます
Sub Main()
Dim data = <doc>
<Procedure-Text>
<A ID="marker1"></A>Do This Procedure
</Procedure-Text>
<Procedure-Text>
<A ID="marker2"></A>Do That Procedure
</Procedure-Text>
</doc>
Dim marker2 = From x In data...<Procedure-Text> _
Where x.<A>[email protected] = "marker2" _
Select x
' prints the second procedure-text element
Console.WriteLine(marker2.FirstOrDefault().ToString())
Console.ReadKey()
End Sub
作品:あなたは
Select x
全例を指定します!ありがとう! FirstOrDefaultではなく、Valueを使用して必要な文字列を取得します。 – mraviator
VBには、C#(私の選択した言語)に欠けているxmlのサポートがたくさんあります。そのVBの唯一のことは、C#で願っていました。また、このサポートがXElementsのダクト入力にも拡張されているかどうかはわかりませんでした。その非常に顕著なコンパイラの魔法。 – Will