当前位置:  开发笔记 > 编程语言 > 正文

JDOM2 xpath在不同的命名空间中查找节点

如何解决《JDOM2xpath在不同的命名空间中查找节点》经验,为你挑选了0个好方法。

我正在尝试使用JDOM2来从XML文档中提取我关心的信息.如何在标签内获取标签?

我只取得了部分成功.虽然我已经能够使用xpath提取标记,但是在记录标记中提取标题,描述和其他数据的xpath查询已返回null.

我一直在成功地使用Xpath 从文档中提取标签.为此,我使用以下xpath查询:"// oai:record"其中"oai"命名空间是我为了使用xpath而组建的命名空间.

你可以在这里看到我正在解析的XML文档,我在下面放了一个示例:http://memory.loc.gov/cgi-bin/oai2_0?verb = ListRecords&set = cwp&metadataPrefix = oo_dc


    
oai:lcoa1.loc.gov:loc.pnp/cph.3a02293 2009-05-27T07:22:37Z cwp lcphotos
Jubal A. Early This record contains unverified, old data from caption card. [between 1860 and 1880] image still image http://hdl.loc.gov/loc.pnp/cph.3a02293 eng No known restrictions on publication.

如果您查看较大的文档,您将看到任何标记上都没有列出"xmlns"属性.还有一个问题是文档中有三个不同的命名空间("none/oai","oai_dc","dc").

发生的事情是xpath没有匹配,evaluateFirst(parent)返回null.

以下是我从记录元素中提取标题,日期,描述等的一些代码.

    XPathFactory xpf = XPathFactory.instance();
    XPathExpression xpath = xpf.compile("//dc:title",
                  Filters.element(), null,
                  namespaceList.toArray(new Namespace[namespaceList.size()]));
    Element tag = xpath.evaluateFirst(parent);

    if(tag != null)
    {
        return Option.fromString(tag.getText());
    }

    return Option.none();

任何想法将不胜感激!谢谢.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有