使用XPathJava提取XML嵌套内容

使用XPathJava提取XML嵌套内容,java,xml,xpath,xml-parsing,Java,Xml,Xpath,Xml Parsing,我试图在pom中提取依赖项标记的xml嵌套内容。 但即使指定了位置,它也无法获得正确的Dependencies标记。有什么帮助吗? 这是我的pom.xml <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org

我试图在pom中提取依赖项标记的xml嵌套内容。 但即使指定了位置,它也无法获得正确的Dependencies标记。有什么帮助吗? 这是我的pom.xml

<project
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
        xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    
    
    <build>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-nodeps</artifactId>
                        <version>1.8.1</version>
                    </dependency>

                </dependencies>
    </build>

    <dependencies>
        <dependency>
            <groupId>com.intent.tm</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.0.0.1</version>
        </dependency>
        <!-- For Compress JS -->
        <dependency>
            <groupId>com.yahoo.platform.yui</groupId>
            <artifactId>yuicompressor</artifactId>
            <version>2.4.7</version>
        </dependency>
        <dependency>
            <groupId>com.sybase</groupId>
            <artifactId>EccpressoFIPSJca</artifactId>
            <version>7.0</version>
        </dependency>
实际产量:

<dependencies>
                    <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-nodeps</artifactId>
                        <version>1.8.1</version>
                    </dependency>

                </dependencies>

org.apache.ant
蚂蚁结
1.8.1
预期产出:

<dependencies>
        <dependency>
            <groupId>com.intent.tm</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.0.0.1</version>
        </dependency>
        <!-- For Compress JS -->
        <dependency>
            <groupId>com.yahoo.platform.yui</groupId>
            <artifactId>yuicompressor</artifactId>
            <version>2.4.7</version>
        </dependency>
        <dependency>
            <groupId>com.sybase</groupId>
            <artifactId>EccpressoFIPSJca</artifactId>
            <version>7.0</version>
        </dependency>

com.intent.tm
公地io
1.0.0.1
com.yahoo.platform.yui
真空压缩机
2.4.7
com.sybase
EccpressoFIPSJca
7

由于某些原因,当指定的位置不是build时,它会在build标记中打印依赖项。我不明白为什么会发生这种情况,是否还有其他方法可以获得我的预期结果?

在XPath中
/
可以匹配任意数量的子路径,因此它也会在build部分中查找依赖项。如果我把你的密码改成

 String xpathStr = "/project/dependencies";

我得到了你想要的输出。一个斜杠正好匹配XML中的一个级别,因此我们从根目录中获取project,然后直接从project下获取依赖项。

在XPath中
/
可以匹配任意数量的子路径,因此它也会在构建部分中查找依赖项。如果我把你的密码改成

 String xpathStr = "/project/dependencies";

我得到了你想要的输出。一个斜杠正好匹配XML中的一个级别,因此我们从根目录获取项目,然后直接从项目下获取依赖项。

xPath.evaluate(xpathStr、document、XPathConstants.NODE);返回一个节点。evaluate(xpathStr、文档、XPathConstants.NODESET)将返回节点列表。//匹配下的任何内容,所以您在项目下的任何地方都要求依赖关系,不仅在子项中,而且在孙子项中。@JPMoresmau那么应该修改什么来实现这一点呢?你能将answerException中的全部代码粘贴到线程“main”java.lang.ClassCastException中吗:com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList不能强制转换到org.w3c.dom.Node我在更改为NODESETSorry时得到这个,忽略它suggestion@JP更重要的是,你能看看我面临的关于xpath.xpath的这个问题吗(xpathStr,document,XPathConstants.NODE);返回一个NODE.evaluate(xpathStr,document,XPathConstants.NODESET)将返回一个节点列表//匹配下的任何内容,因此您在project下的任何地方都会要求依赖项,不仅是子节点,而且是子节点。@JPMoresmau那么应该修改什么来实现这一点呢?您可以将answerException中的全部代码粘贴到线程“main”中吗java.lang.ClassCastException:com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList不能强制转换为org.w3c.dom.Node当我更改为NODESETSorry时,会得到这个结果,忽略它suggestion@JP另外,你可以看看我面临的关于xpath的问题吗?谢谢你这么多我不知道我们可以做的事情/我做起来有困难。替换()对于我得到的结果,其中包含提取的依赖项..我计划用其他依赖项重新放置文本,但无法这样做…任何hepl?非常感谢,我不知道我们可以处理/im有问题。替换()对于我得到的包含提取依赖项的结果..我计划用其他依赖项重新放置文本,但无法这样做..任何hepl?