1

SAX パーサーを使用して、ネストされた XML を解析する必要があります。

<ParentNode  id="3" name="3" >
    <ChildNode>
        <InnerNode id="13" name="13"   parentID="3" />
    </ChildNode>
    <ChildNode>
        <ParentNode id="2" name="2" >
            <ChildNode>
                <ParentNode id="1" name="1" >
                    <ChildNode>
                        <InnerNode id="11" name="11"   parentID="1" />
                    </ChildNode>
                    <ChildNode>
                        <InnerNode id="10" name="10"   parentID="1" />
                    </ChildNode>
                </ParentNode>
            </ChildNode>
            <ChildNode>
                <InnerNode id="12" name="12"   parentID="2" />
            </ChildNode>
        </ParentNode>
    </ChildNode>
</ParentNode>

ここでは、ParentNode タグがメインのタグです。ParentNode を ChildNode タグ内に配置することもできます。ここでは、ParentNode と ChildNode の間の onyToMany 関係を示しています。休止状態のドメイン内の ChildNode と InnerNode の間の oneToOne 関係。

これは静的 XML ではありません。さらに入れ子にすることができます。

4

2 に答える 2

2

SAX パーサーを使用する場合に考慮すべき設計パターンは、オブジェクトのスタックを定義することです (例: Stack objectStack = new Stack())。対応するオブジェクトを startElement のスタックにプッシュします。endElement でオブジェクトをスタックからポップします。含まれている (親) オブジェクトを知りたい場合は、スタックの一番上を参照してください。(たとえば、startElement で、スタックの一番上を覗いてそこにオブジェクトがある場合、それは現在の要素によって定義されたオブジェクトの親です。)

于 2016-07-15T16:09:08.210 に答える
0

これは役立つはずです

public static void main(String argv[]) {

    try {

    SAXParserFactory factory = SAXParserFactory.newInstance();
    SAXParser saxParser = factory.newSAXParser();

    DefaultHandler handler = new DefaultHandler() {

    boolean bfname = false;
    boolean blname = false;
    boolean bnname = false;
    boolean bsalary = false;

    public void startElement(String uri, String localName,String qName, 
                Attributes attributes) throws SAXException {

        System.out.println("Start Element :" + qName);



    }

    public void endElement(String uri, String localName,
        String qName) throws SAXException {

        System.out.println("End Element :" + qName);

    }

 saxParser.parse("yourfile.xml", handler);

     } catch (Exception e) {
       e.printStackTrace();
     }

   }
于 2013-02-08T11:01:56.593 に答える