XPath не возвращает ожидаемые значения - PullRequest
2 голосов
/ 06 мая 2011

У меня есть XML-документ, который я анализирую с помощью jDOM, а затем пытаюсь взять все узлы, которые удовлетворяют выражению XPath, но XPath всегда не возвращает никаких элементов.Вот мой XML-файл:

<?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>

Вот мой код XPath:

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;
    }

Я проверил здесь свое выражение XPath: http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm, и оно работает.

Почему это не работает в моем коде?

Заранее спасибо.

1 Ответ

2 голосов
/ 06 мая 2011
...