Javascript 请更正此xpath表达式
这是我的XML文档的一部分: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 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表达式的其余部分。前两个例子是一个典型的解释。我需要你的最后一个例子。谢谢这就解释了。我需要你的最后一个例子。谢谢