0

シーンを設定するために、私は現在、与えられたXMLファイルを読み取り、それらをデータベースに解析するAndroid用のXMLアダプターに取り組んでいます。XMLファイル内のノードがファイルごとに変わる可能性があると彼らが私に思い浮かぶまで、私はこれを持っていたと思ったので、欠落している変数に対処するメカニズムを組み込む必要があります。

これに対する最も明白な解決策はswitch()ステートメントでしたが、それは文字列では機能しないので、私はif-then-else構造を構築し始めました。アイデアは、ノードの名前をチェックし、それに基づいてノードをどう処理するかを決定するというものでした。シンプルですね

問題は、何をしても、必要なノードの名前をXMLファイルから取得できないように見えることです。XMLファイルの構造は次のとおりです。

<Vehicle>
    <Detail>
        <VIN>BBB2791276393</VIN>
        <RegNo>KN05EAP</RegNo>
        <Doors>5</Doors>
    </Detail>
</Vehicle>

比較できるようにする必要があるのは、「VIN」や「RegNo」などのタグ名ですが、それらを引き出す方法がわかりません。ETA:これを明確にしなかったので、Detailの子ノードはXMLファイル間で変更され、それらが来たら処理する必要があります...

NodeList私はDOMパーサーを使用しており、に基づいてを引き出してい<Detail>ます。NodeList.item(0)ノードが表示されますが、それを(たとえば)<Detail>分解しようとすると、またはのタグ名を取得できません。実際、元の名前に基づいてどのノードであるかを判別するために使用できる、それらの参照を取得できないようです。getChildNodes()<VIN><RegNo>

誰かアイデアがありますか?

4

2 に答える 2

0

子ノードの名前:

Element elem = (Element)nodeList.item(0);

        Node child;
        if( elem != null){
                if (elem.hasChildNodes()){
                   for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                       if( child.getNodeType() == Node.ELEMENT_NODE  ){
                           Log.i("fff", child.getNodeName());
                       }
                }
            }
        }

ノードの値を取得するには、このgetValue()メソッドを使用します(このソリューションをどこで見つけたかを忘れたので、残念ながら、それを作成した人の功績を認めることができません):

public String getValue(Element item, String str) {
        NodeList n = item.getElementsByTagName(str);
        return this.getElementValue(n.item(0));
    }

public final String getElementValue( Node elem ) {
        Node child;
        if( elem != null){
            if (elem.hasChildNodes()){
                for( child = elem.getFirstChild(); child != null; child = child.getNextSibling() ){
                    if( child.getNodeType() == Node.TEXT_NODE  ){
                        //child.getNodeName();
                        return child.getNodeValue();
                    }
                }
            }
        }
        return null;
    } 
于 2012-06-22T10:53:06.327 に答える
0

わかりました..詳細タグまで到達できると説明したように..この方法で試してください...

// Getting VIN of Detail
 if (element.getElementsByTagName("VIN").getLength() > 0) {
        childNode = element.getElementsByTagName("VIN").item(0); //Get all the elements one by one
        String VIN = childNode.getFirstChild().getNodeValue();

    }

詳細のすべての子タグに対してそれを行うことができます...これがあなたを助けることを願っています..!!!

于 2012-06-22T11:01:23.810 に答える