首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xpath从子对象获取值

xpath从子对象获取值
EN

Stack Overflow用户
提问于 2012-08-05 00:52:51
回答 2查看 830关注 0票数 2

从一个名字我如何得到兄弟姐妹?我不会去嵌套的。只有一个在同一水平。这怎麽可能?

代码语言:javascript
复制
<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

代码语言:javascript
复制
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;
}

编辑:我需要每个图像节点和其中的动态值。

代码语言:javascript
复制
<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:

来澄清更多。我需要将每个图像节点与其中的动态内容配对。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-05 02:12:13

使用的

代码语言:javascript
复制
/*/dynamic-element[@name='image'][1]/dynamic-content

这将选择作为dynamic-element的子元素的任何dynamic-content,该dynamic-element是顶级元素的第一个dynamic-element子元素,并且其name属性的字符串值为字符串"image"

和此XPath expression

代码语言:javascript
复制
/*/dynamic-element[@name='image']/dynamic-content

选择

代码语言:javascript
复制
<dynamic-content>C:\fakepath\images (1).jpeg</dynamic-content>
<dynamic-content>C:\fakepath\images (1).jpeg</dynamic-content>

如果只想要文本节点,请使用

代码语言:javascript
复制
/*/dynamic-element[@name='image']/dynamic-content/text()

这将选择由前一个表达式选择的元素的以下两个文本节点子项:

代码语言:javascript
复制
C:\fakepath\images (1).jpeg
C:\fakepath\images (1).jpeg

您可以通过迭代返回的XmlNodeList并获取其中包含的每个XmlNode对象的值来获得所选节点的值。

票数 1
EN

Stack Overflow用户

发布于 2012-08-05 01:36:52

目前,在选择<dynamic-element>元素后,您可以运行以下XPath:

代码语言:javascript
复制
//following-sibling::dynamic-content

让我们来看看这意味着什么:

  • //:移回文档根目录,并考虑嵌套在任何位置的所有节点。

找到前一个节点的同级节点(即,在相同的嵌套级别上且具有相同的父元素)。

这不是你在文本中所描述的。

相反,您希望找到当前节点的后续同级节点。该同级元素将是一个<dynamic-element>元素。在这个同级节点中,您希望找到一个子节点,即<dynamic-content>元素。

因此,在您的node.selectSingleNode调用中尝试此XPath:

代码语言:javascript
复制
following-sibling::dynamic-element/dynamic-content
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11810325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档