搜索XML文档以获取价值并返回信息

时间:2017-01-10 21:34:08

标签: xml vb.net

我试图在下面的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返回与特定项目相关的信息,至少应该很容易搜索和检索标签,对吗?

目前,当我运行代码时,实际上并没有发生任何事情。 它使文件保持打开状态,因此无法再次访问它。任何人都可以帮助我,

1 个答案:

答案 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循环来直接迭代细节。