有没有一种方法可以找到某个父节点中某个节点的某个实例

时间:2019-06-05 09:31:46

标签: xml vb.net

我已经在网上搜索了很多地方,找到了答案,也许我已经读完了一些书,或者没有对它进行足够的研究,而且对于XML的阅读还很陌生,但有一种方法可以说是使用{{1} },但仅在父节点的特定出现位置进行搜索,因此理想的情况是getelementbytagname(),其中i在特定点处递增。父节点具有相同的名称,因此在我的情况下,文件中有多个“标头”标记,而我需要使用相同的名称来显示信息。

我知道如何去阅读xml文件,我也知道如何提取我实际上想要的信息,但是我正处在它变得非常凌乱并且证明过于繁琐的时候。例如,我有一个XML文件,基本上有3个不同的记录,“ Header”是父级,然后它将具有子节点/元素,例如“ billnumber”,“ customername”等,这些将被称为每个“标头”中的值相同,只是值不同。

xml.Read

getelementbytagname("childnode").("parentnode").(i)

所以这是我如何从某些“标头”获取信息的一种简单方法,我想知道是否有一种方法可以通过使用 If xml.Name = "Header" Then builder.Append("Bill:") xml.Read() While Not xml.Name = "Header" xml.WhitespaceHandling = 1 If xml.Name = "BillNumber" Then xml.Read() BillNumber = xml.value() xml.Read() End If 来获取“标头”元素的数量,然后基本上使用像count = doc.GetElementsByTagName("Header").Count这样的计数器,然后像我说的那样做i之类的东西。这样一来,我可以避免读取整个文件,而只需要手动选择certian部分,因为文件中包含大量信息。

1 个答案:

答案 0 :(得分:1)

听起来您的XML看起来像这样...

<header>
  <billnumber>1</billnumber>
  <customername>john</customername>
</header>
<header>
  <billnumber>2</billnumber>
  <customername>bob</customername>
</header>
<header>
  <billnumber>3</billnumber>
  <customername>richard</customername>
</header>

您可以使用System.XML命名空间中的方法来非常轻松地使用它。如果我对您的问题的理解是正确的,那么这应该是一个很好的起点:

Dim xmldoc As New System.Xml.XmlDocument
xmldoc.Load("myfile.xml")

For Each HeaderNode As System.Xml.XmlNode In xmldoc.SelectNodes("header")
    Debug.Print("bill number is: " & HeaderNode("billnumber").Value)
    Debug.Print("customer name is: " & HeaderNode("customer name").Value)
Next