xpath - 如何选择文件的内容?

时间:2016-05-18 09:38:51

标签: xml xpath

我有一个文件(为了更好的可读性pozwijałem其他我不关心的配置文件和元素)

<?xml version='1.0' encoding='UTF-8'?>

<domain xmlns="urn:jboss:domain:4.0">

    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
    </extensions>

    <profiles>
        <profile name="default">
            <subsystem xmlns="urn:jboss:domain:logging:3.0">
            <subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
            ...
        </profile>
        <profile name="ha">
        <profile name="full">
        <profile name="full-ha">
            <subsystem xmlns="urn:jboss:domain:datasources:4.0">
                <datasources>
                    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
                        <driver>h2</driver>
                        <security>
                            <user-name>sa</user-name>
                            <password>sa</password>
                        </security>
                    </datasource>         
                    <drivers>
                        <driver name="h2" module="com.h2database.h2">
                            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                        </driver>
                    </drivers>
                </datasources>
            </subsystem>
        </profile>
    </profiles>
</domain>

我想找到项目

jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

http://www.xpathtester.com/xpath页上的正确性检查

1 个答案:

答案 0 :(得分:0)

这可能是命名空间问题(搜索它,或更具体的关键字&#39;默认命名空间&#39;)。基本上,您需要将前缀映射到默认命名空间URI,并使用该前缀来引用默认命名空间中的元素,例如<connection-url>元素。

不同的XPath处理器提供了声明命名空间前缀的不同方法,只需搜索文档。对于xpathtester.com,您可以在命名空间&#39;中声明命名空间前缀。页面左上角区域的框格式如下(参见documentation):

d="urn:jboss:domain:datasources:4.0"

然后,以下XPath成功返回所需的文本:

//d:connection-url/text()

演示:http://www.xpathtester.com/xpath/9d60daf659d2909457f218211ebec1ab