正如 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 是一种标准查询语言,许多 XML 工具和技术(例如 XSLT)都使用它,因此学习它非常有用。此外,有时,即使在文档中,能够通过简单的字符串专门引用文档中的特定 XML 节点也很方便。LINQ 很棒,但它是一项专有的 Microsoft 技术,如果需要,您不能将 LINQ 路径作为字符串存储在数据库或配置文件中,因此有时 XPath 是一种更可取的方法。
XPath 的另一个变体是//category[@name='a']/SubCategoryName
. 开头的双斜线指示它在文档中的任何位置查找类别元素,而不是在任何特定的父元素下。