Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 请更正此xpath表达式_Javascript_Xml_Dom_Contains_Xpath - Fatal编程技术网

Javascript 请更正此xpath表达式

Javascript 请更正此xpath表达式,javascript,xml,dom,contains,xpath,Javascript,Xml,Dom,Contains,Xpath,这是我的XML文档的一部分: <?xml version="1.0" encoding="UTF-8"?> <catalog> <mfVictor> <decal> <company>Victor</company> <title>Wood Horn with Blue Background</title> <image> <url>vic

这是我的XML文档的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<mfVictor>
 <decal>
    <company>Victor</company>
    <title>Wood Horn with Blue Background</title>
    <image>
      <url>victor01.jpg</url>
      <width>60</width>
      <height>60</height>
      <name>Wood Horn Blue Background</name>
      <link></link>
    </image>
    <price>$15.00</price>
    <instock>In Stock</instock>
    <notes>none</notes>
  </decal>
</mfVictor>
</catalog>
其中itemName是this.innerHTML,传递给函数。它看起来像是被访问了,因为在console.log中我可以看到一个长度为1的XMLobject。但我不知道如何访问“贴花”的孩子或“头衔”的兄弟姐妹


谢谢阅读。

我想您可能需要//贴花[包含(./Title,“蓝色背景的木喇叭”)]

这将为您提供具有名为“Title”的子节点的贴花节点,该子节点包含文本“蓝色背景的木喇叭”


要访问Title元素的同级元素,可以选择该元素返回的节点的子元素。(它实际上返回的是贴花节点,而不是标题节点。)

我想您可能需要//贴花[包含(./title,‘蓝色背景的木喇叭’)]

这将为您提供具有名为“Title”的子节点的贴花节点,该子节点包含文本“蓝色背景的木喇叭”


要访问Title元素的同级元素,可以选择该元素返回的节点的子元素。(它实际上返回的是贴花节点,而不是标题节点。)

如果需要根据他的标题选择贴花,我更喜欢以下XPath:

//decal/title[contains(.,\'"+itemName+"\')]/parent::node()
//decal/title[contains(.,\'"+itemName+"\')]/..
//decal[title[contains(.,\'"+itemName+"\')]]
要选择所选贴花标题的同级,可以使用

//decal/title[contains(.,\'"+itemName+"\')]/following-sibling::*
如果您想要选择的贴花的所有子项,您可以使用(可能您需要此项)

或者更好,如果你有完整的标题

//decal[title[text()=\'"+itemName+"\']]/child::*

使用方括号可以指示解析器遍历xml树,根据指定的条件进行选择,但不更改上下文节点。将方括号视为橡皮筋,一旦满足其中包含的测试,解析器将返回到起始节点并计算xpath表达式的其余部分。前两个示例是一个典型的

如果您需要根据他的标题选择贴花,我更喜欢以下XPath:

//decal/title[contains(.,\'"+itemName+"\')]/parent::node()
//decal/title[contains(.,\'"+itemName+"\')]/..
//decal[title[contains(.,\'"+itemName+"\')]]
要选择所选贴花标题的同级,可以使用

//decal/title[contains(.,\'"+itemName+"\')]/following-sibling::*
如果您想要选择的贴花的所有子项,您可以使用(可能您需要此项)

或者更好,如果你有完整的标题

//decal[title[text()=\'"+itemName+"\']]/child::*

使用方括号可以指示解析器遍历xml树,根据指定的条件进行选择,但不更改上下文节点。将方括号视为橡皮筋,一旦满足其中包含的测试,解析器将返回到起始节点并计算xpath表达式的其余部分。前两个例子是一个典型的解释。我需要你的最后一个例子。谢谢这就解释了。我需要你的最后一个例子。谢谢