代码之家  ›  专栏  ›  技术社区  ›  Adam

根据多个同级条件选择同级节点值

  •  0
  • Adam  · 技术社区  · 5 年前

    我想选择Type=IMAGE和Key=XS的节点的URL值(5.jpg) ps:Images节点的顺序是随机的,所以我不能只选择第n个节点。

    我尝试过但失败了:

    Dim root As XmlNode = objXML.DocumentElement
    Dim nodeList As XmlNodeList = root.SelectNodes("/Products/Product")
    

    nodeList(i).SelectSingleNode("//URL[../Type='IMAGE' and ../Key='XS']").InnerText

    nodeList(i).SelectSingleNode("/Images/[Type=IMAGE] and /Images/[Key=XS]").ChildNodes(0).SelectSingleNode("URL").InnerText

    <Products>
        <Product>
            <Id>9200000093797005</Id>
            <Images>
                <Type>IMAGE</Type>
                <Key>XS</Key>
                <Url>5.jpg</Url>
            </Images>
            <Images>
                <Type>IMAGE</Type>
                <Key>S</Key>
                <Url>1.jpg</Url>
            </Images>
            <Images>
        </Product>
    </Products>
    

    已在此处检查:

    0 回复  |  直到 5 年前
        1
  •  1
  •   JayV    5 年前

    你的尝试几乎是正确的。我认为使用 XmlNodeList 这就是造成你问题的原因。如果你切换到使用 XmlNode SelectSingleNode 那你早就知道答案了。

        Dim root As XmlNode = objXml.DocumentElement
        Dim node As XmlNode = root.SelectSingleNode("//Products/Product/Images[Type='IMAGE' and Key='XS']/Url")
        Dim url As String = node.InnerText