Jig*_*hah 5 xml vb.net xmlnode xml-attribute
我喜欢XML
<Categories>
<category name="a">
<SubCategory>1</SubCategory>
<SubCategoryName>name1</SubCategoryName>
</category>
<category name="b">
<SubCategory>2</SubCategory>
<SubCategoryName>name2</SubCategoryName>
</category>
</Categories>
Run Code Online (Sandbox Code Playgroud)
我如何获得的值<SubCategoryName>从<category name="a">?
正如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
Run Code Online (Sandbox Code Playgroud)
以下是通过XmlDocument类使用XPath的方法:
Dim doc As New XmlDocument()
doc.Load(filePath)
Dim name As String = doc.SelectSingleNode("/Categories/category[@name='a']/SubCategoryName").InnerText
Run Code Online (Sandbox Code Playgroud)
这是XPath各部分的含义:
/Categories - 开头的斜杠指示它查看XML文档的根目录.斜杠后跟我们在根目录中查找的子元素的名称./category- 我们在元素中寻找的/Categories元素的名称.[@name='a']- 括号表示它是一种类似条件的If声明.@符号表示我们指定了一个属性名称(而不是元素名称)./SubCategoryName- 我们在category匹配该条件的元素内寻找的子元素的名称.XPath非常强大和灵活.XPath是许多XML工具和技术(如XSLT)使用的标准查询语言,因此它非常有用.此外,有时,即使在文档中,通过简单的字符串专门引用文档中的特定XML节点也很方便.LINQ很棒,但它是Microsoft专有技术,如果需要,您不能将LINQ路径作为字符串存储在数据库或配置文件中,因此有时XPath是一种优选方法.
XPath的另一种变体是//category[@name='a']/SubCategoryName.开头的双斜杠指示它在文档中的任何位置找到类别元素,而不是在任何特定的父元素下.