开发者

XPath doesn't return expected values

开发者 https://www.devze.com 2023-03-04 11:46 出处:网络
I have XML document that I parse with jDOM and then try to take all nodes that satisfies XPath expression, but XPath always returns no elements.

I have XML document that I parse with jDOM and then try to take all nodes that satisfies XPath expression, but XPath always returns no elements. Here is my XML file:

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

<!-- Using aggregate instance. Should pass -->

<pnml xmlns="http://www.pnml.org/version-2009/grammar/pnml">
    <net id="rootAgregate" type="http://www.cs.stu.cn.ua/jess/enets">
        <page id="main">
            <transition id="agregate1">
                <name>
                    <text>agregate1</text>
                    <graphics>
                        <offset x="22" y="-14"/>
                    </graphics>
                </name>
                <definition type="aggregate" subType="myAggregate"/>
                <graphics>
                    <position x="950" y="484"/>
                </graphics>
            </transition>
            <transition id="Input1">
                <name>
                    <text>agregate1</text>
                    <graphics>
                        <offset x="22" y="-14"/>
                    </graphics>
                </name>
                <definition type="input"/>
                <graphics>
                    <position x="950" y="484"/>
                </graphics>
            </transition>
            <transition id="Output1">
                <name>
                    <text>agregate1</text>
                    <graphics>
                        <offset x="22" y="-14"/>
                    </graphics>
                </name>
                <definition type="output"/>
                <graphics>
                    <position x="950" y="484"/>
                </graphics>
            </transition>
        </page>
    </net>
</pnml>

Here is my XPath code:

private List<String> getChildNames(Document parsedDom) throws JDOMException {
        ArrayList<String> childNames = new ArrayList<String>();
        XPath childCounter = XPath.newInstance("//definition[@type=\"aggregate\"]");
        ListIterator<Element> listIterator = childCounter.selectNodes(parsedDom).listIterator();

        while (listIterator.hasNext()) {
            Element definitionElement = listIterator.next();
            childNames.add(definitionElement.getAttributeValue("subType"));
        }

        return childNames;
    }

I checked my XPath expression here: http://www.whitebeam.org/library/guide/T开发者_如何学GoechNotes/xpathtestbed.rhtm and it works.

Why it doesn't work in my code?

Thank you in advance.


You need the namespace in your xpath expression.

How to use XPath on xml docs having default namespace

Parse XML with XPath & namespaces in Java

0

精彩评论

暂无评论...
验证码 换一张
取 消