我已经在网上搜索了很多地方,找到了答案,也许我已经读完了一些书,或者没有对它进行足够的研究,而且对于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部分,因为文件中包含大量信息。
答案 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