Usman が推奨したように、LINQ を使用できますが、別の一般的なオプションは XPath を使用することです。XPath を使用して、XDocument
クラスまたは古いXmlDocument
クラスを使用して一致する要素を選択できます。
XDocument
クラスを介して XPath で行う方法は次のとおりです。
Dim doc As New XDocument()
doc.Load(filePath)
Dim name As String = doc.XPathSelectElement("/Categories/category[@name='a']/SubCategoryName").Value
そして、XmlDocument
クラスを介して XPath でそれを行う方法は次のとおりです。
Dim doc As New XmlDocument()
doc.Load(filePath)
Dim name As String = doc.SelectSingleNode("/Categories/category[@name='a']/SubCategoryName").InnerText
XPath の各部分の意味は次のとおりです。
/Categories
- 先頭のスラッシュは、XML ドキュメントのルートを調べるように指示します。スラッシュの後には、ルートで探しているサブ要素の名前が続きます。
/category
- 要素内で探している要素の名前/Categories
。
[@name='a']
- 括弧は、それが状態であることを意味しますIf
。@ 記号は、(要素名ではなく) 属性名を指定していることを意味します。
/SubCategoryName
category
-その条件に一致した要素内で探しているサブ要素の名前。
XPath は非常に強力で柔軟です。XPath は、XSLT などの多くの XML ツールやテクノロジで使用される標準のクエリ言語であるため、習得すると非常に役立ちます。さらに、文書化の場合でも、単純な文字列を介して文書内の特定の XML ノードを明確に参照できると便利な場合があります。LINQ は優れていますが、これは Microsoft 独自のテクノロジであり、LINQ パスを必要に応じてデータベースまたは構成ファイルに文字列として格納することはできないため、XPath の方が適している場合があります。
XPath の別のバリエーションは//category[@name='a']/SubCategoryName
. 先頭の二重スラッシュは、特定の親要素の下ではなく、ドキュメント内の任意の場所でカテゴリ要素を検索するように指示します。