我试图在下面的XML文档中搜索一个被称为PLU的12位数代码。不过我的经验很多都是关于这些事情的SQL,而且我几乎要试着让它发挥作用。
<?xml version="1.0" encoding="Windows-1252"?>
<root>
<Test>
<PLU_Code>00000000000</PLU_Code>
<Item_Name>Example Name</Item_Name>
<Item_Size>1.1</Item_Size>
<Item_Colour>aaaaaaaaa</Item_Colour>
<Item_Gender>Male</Item_Gender>
<Item_AgeGroup>Neutral</Item_AgeGroup>
</Test>
XML文件只包含以前搜索过的项目的详细信息。现在,我能够毫无问题地编写文件,但是我试图通过检查之前是否搜索过项目来防止重复输入。我似乎无法让它工作。我的最新尝试是这样的:
Dim xmldoc As New XmlDataDocument()
Dim xmlnode As XmlNodeList
Dim i As Integer
Dim str As String
Dim fs As New FileStream(_PLUCheckHistoricXMLFilePath & "\Historic_PLU_Searches.xml", FileMode.Open, FileAccess.Read)
xmldoc.Load(fs)
xmlnode = xmldoc.GetElementsByTagName("root")
For Each nodes In xmldoc.SelectNodes("Test") 'This will be changed to txt box contents
'each nodes is a Detail element
MsgBox(xmlnode(i).ChildNodes.Item(1))
MsgBox(xmlnode(i).ChildNodes.Item(2))
Next
我的主要问题是如果可能的话,搜索文件并根据PLU_CODE返回与特定项目相关的信息,至少应该很容易搜索和检索标签,对吗?
目前,当我运行代码时,实际上并没有发生任何事情。 和它使文件保持打开状态,因此无法再次访问它。任何人都可以帮助我,
答案 0 :(得分:1)
这将迭代所有测试节点和子节点。希望这会让你开始。
Dim xmldoc As New XmlDocument()
Dim xmlnode As XmlNodeList
xmldoc.Load(_PLUCheckHistoricXMLFilePath & "\Historic_PLU_Searches.xml")
For Each testNode As XmlNode In xmldoc.SelectNodes("/root/Test")
For Each detailNode As XmlNode In testNode.ChildNodes
MsgBox(detailNode.InnerText)
Next
Next
如果您愿意,可以通过将xpath更改为“/ root / Test / *”并删除其中一个For Each
循环来直接迭代细节。