0

外側の要素を属性でフィルタリングして、他の要素の要素をカウントする方法について質問があります。次の XML ドキュメントがあります。

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<DSCT2C>
    <TESTSTEPS APPLICATION="UGS">

        <TESTSTEP ORDER_NUMBER="0">
            <EN>Common Test</EN>
            <DE>Allgemeiner Test</DE>

            <TEST NEED_FUNCTION="true" FUNCTION_NAME="functionName">
                <DESCRIPTION>
                    <DE>Hallo</DE>
                    <EN>Hello</EN>
                </DESCRIPTION>
                <FILES>
                    <FILE>test.prt</FILE>
                    <FILE>test.drw</FILE>
                </FILES>
            </TEST>
            <TEST NEED_FUNCTION="false">
                <DESCRIPTION>
                    <DE>Hallo2</DE>
                    <EN>Hello2</EN>
                </DESCRIPTION>
                <FILES>
                </FILES>
            </TEST>
        </TESTSTEP>

        <TESTSTEP ORDER_NUMBER="1">
            <EN>Just a test</EN>
            <DE>Nur ein Test</DE>

            <TEST NEED_FUNCTION="true" FUNCTION_NAME="functionName123">
                <DESCRIPTION>
                    <DE>Hallo</DE>
                    <EN>Hello</EN>
                </DESCRIPTION>
                <FILES>
                    <FILE>test.prt</FILE>
                    <FILE>test.drw</FILE>
                </FILES>
            </TEST>
            <TEST NEED_FUNCTION="true" FUNCTION_NAME="functionName456">
                <DESCRIPTION>
                    <DE>Hallo2</DE>
                    <EN>Hello2</EN>
                </DESCRIPTION>
                <FILES>
                </FILES>
            </TEST>
        </TESTSTEP>

    </TESTSTEPS>
</DSCT2C>

たとえばTEST、要素からすべての要素をカウントしたい。どうすればDOMでそれを行うことができますか?TESTSTEPORDER_NUMBER=0

4

2 に答える 2

0

xpath 式を使用します。

"//TESTSTEP[@ORDER_NUMBER = '0']/TEST"

NodeList次に、返された の長さを取得します。

コードは次のようになります。

XPath xpath = XPathFactory.newInstance().newXPath()
NodeList tests = (NodeList)xpath.evaluate("//TESTSTEP[@ORDER_NUMBER = '0']/TEST", document, XPathConstants.NODESET);

int testCount = tests.getLength();
于 2013-05-22T13:29:38.350 に答える
0

これを試して

    int n = 0;
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File("1.xml"));
    NodeList list = doc.getElementsByTagName("TESTSTEP");
    for (int i = 0; i < list.getLength(); i++) {
        Element e = (Element) list.item(i);
        if (e.getAttribute("ORDER_NUMBER").equals("0")) {
            n += e.getElementsByTagName("TEST").getLength();
        }
    }
于 2013-05-22T13:37:24.490 に答える