从一个名字我如何得到兄弟姐妹?我不会去嵌套的。只有一个在同一水平。这怎麽可能?
<root available-locales="en_US" default-locale="en_US">
<dynamic-element instance-id="qk6m4eST" name="image" type="image" index-type="">
<dynamic-element instance-id="fHkE2dfT" name="subimage" type="image" index-type="">
<dynamic-element instance-id="jbthDbC4" name="x" type="text" index-type="">
<dynamic-content>23</dynamic-content>
</dynamic-element>
<dynamic-element instance-id="Rb3qRF6N" name="y" type="text" index-type="">
<dynamic-content>32</dynamic-content>
</dynamic-element>
<dynamic-content><![CDATA[C:\fakepath\images (1).jpeg]]></dynamic-content>
</dynamic-element>
<dynamic-content><![CDATA[C:\fakepath\images (1).jpeg]]></dynamic-content>
</dynamic-element>
<dynamic-element instance-id="MFrJW4OR" name="image" type="image" index-type="">
<dynamic-element instance-id="hjKEtVB6" name="subimage" type="image" index-type="">
<dynamic-element instance-id="NrY9iZ4K" name="x" type="text" index-type="">
<dynamic-content>23</dynamic-content>
</dynamic-element>
<dynamic-element instance-id="7lG7RuAC" name="y" type="text" index-type="">
<dynamic-content>32</dynamic-content>
</dynamic-element>
<dynamic-content><![CDATA[C:\fakepath\grillat.jpeg]]></dynamic-content>
</dynamic-element>
<dynamic-content><![CDATA[C:\fakepath\images (1).jpeg]]></dynamic-content>
</dynamic-element>
</root>到目前为止,这是我的代码。它打印出来
测试......23
这是第一个嵌套的子代的值。23
public List<PopupImage> getImageNodes(Document document) {
List<Node> nodes = document.selectNodes("/root/dynamic-element[@name='" + IMAGE_NODE_NAME + "']");
List<PopupImage> popupImages = new ArrayList<PopupImage>();
for (Node node : nodes) {
// node.selectSingleNode("//following-sibling::dynamic-content[1]").getText();
System.out.println("test...... " + node.selectSingleNode("//following-sibling::dynamic-content").getText());
createPopupImage(node);
popupImages.add(createPopupImage(node));
}
return popupImages;
}编辑:我需要每个图像节点和其中的动态值。
<root>
<dynamic-element name=image>
<dynamic-element name=subimage/>
<dynamic-content>content1</dynamic-content>
</dynamic-element>
<dynamic-element name=image>
<dynamic-element name=subimage/>
<dynamic-content>content2</dynamic-content>
</dynamic-element>
</root>edit2:
来澄清更多。我需要将每个图像节点与其中的动态内容配对。
发布于 2012-08-05 02:12:13
使用的
/*/dynamic-element[@name='image'][1]/dynamic-content这将选择作为dynamic-element的子元素的任何dynamic-content,该dynamic-element是顶级元素的第一个dynamic-element子元素,并且其name属性的字符串值为字符串"image"。
和此XPath expression
/*/dynamic-element[@name='image']/dynamic-content选择
<dynamic-content>C:\fakepath\images (1).jpeg</dynamic-content>
<dynamic-content>C:\fakepath\images (1).jpeg</dynamic-content>如果只想要文本节点,请使用
/*/dynamic-element[@name='image']/dynamic-content/text()这将选择由前一个表达式选择的元素的以下两个文本节点子项:
C:\fakepath\images (1).jpeg
C:\fakepath\images (1).jpeg您可以通过迭代返回的XmlNodeList并获取其中包含的每个XmlNode对象的值来获得所选节点的值。
发布于 2012-08-05 01:36:52
目前,在选择<dynamic-element>元素后,您可以运行以下XPath:
//following-sibling::dynamic-content让我们来看看这意味着什么:
//:移回文档根目录,并考虑嵌套在任何位置的所有节点。找到前一个节点的同级节点(即,在相同的嵌套级别上且具有相同的父元素)。
这不是你在文本中所描述的。
相反,您希望找到当前节点的后续同级节点。该同级元素将是一个<dynamic-element>元素。在这个同级节点中,您希望找到一个子节点,即<dynamic-content>元素。
因此,在您的node.selectSingleNode调用中尝试此XPath:
following-sibling::dynamic-element/dynamic-contenthttps://stackoverflow.com/questions/11810325
复制相似问题