0

こんにちは私は以下に示すようなxmlを持っています

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<A>
    <B>
        <X1>
            <Name>ZZZsaqw</Name>
        </X1>
        <X1>
            <Name>ZZZsdasda</Name>
        </X1>
        <X1>
            <Name>ZZZsdsd</Name>
        </X1>
        <S>17000</S>
        <U>18000</U>
        <V>17000</V>
    <B>
    <C>
        <X1>
            <Name>ZZZasqw</Name>
        </X1>
        <X1>
            <Name>ZZZsdsd</Name>
        </X1>
        <X1>
            <Name>ZZ</Name>
        </X1>
        <S>17000</S>
        <U>18000</U>
        <V>17000</V>
    <C>
    <D>
        <X1>
            <Name>ZZZx</Name>
        </X1>
        <X1>
            <Name>ZZZzz</Name>
        </X1>
        <X1>
            <Name>ZZZsaa</Name>
        </X1>
        <S>17000</S>
        <U>18000</U>
        <V>17000</V>
    </D>
<A>

X1タグに興味があります。B、C、Dのいずれかの親タグをそれぞれ読み取る必要があります。そのため、Bに属するX1タグだけに興味がある場合もあります。これを行うにはどうすればよいですか。以下に示すDOMパーサーを使用しましたが、それらをカウントすると、カウントは9と表示されますが、本来は3でした。方法を教えてください。

        NodeList plist = doc.getElementsByTagName("A");
        System.out.println("The length of A is pList is:"+plist.getLength());
        //get the contents of the A
        for (int temp = 0; temp < plist.getLength(); temp++)
        {
            Node nNode = plist.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE)
            {
                //Element eElement = (Element) nNode;

                NodeList typicalCriticalPath = doc.getElementsByTagName("B");
                System.out.println("The length of B is:"+typicalCriticalPath.getLength());

                //get the contents of the typical critical path
                for(int temp1 = 0; temp1<typicalCriticalPath.getLength();temp1++)
                {
                    Node typCriticalPathNode = typicalCriticalPath.item(temp);
                    if (typCriticalPathNode.getNodeType() == Node.ELEMENT_NODE)
                    {
                        Element ele = (Element) typCriticalPathNode;
                        NodeList planItemSection = doc.getElementsByTagName("X1");
                        System.out.println("The length of X1 is:"+planItemSection.getLength());
                    }

                }

            }
        }
 //The output for this is like this-
 //The length of A is pList is:1
 //The length of B is:1
 //The length of X1 is:9

誰かが私が間違っているところを教えてもらえますか?親タグのみでタグを取得できるようにするために何をすべきか。

ありがとう!

4

1 に答える 1

4

NodeList planItemSection = doc.getElementsByTagName( "X1");

これは、ドキュメント内のすべてのX1になります。

私はあなたが欲しいと思います

NodeList planItemSection = ele.getElementsByTagName( "X1");

、ここeleで、は親要素です。

この種のクエリについては、XPathを調べることもできます。

于 2012-09-20T23:28:27.723 に答える