0

私はXMLとAndroidの開発に少し慣れていません...要素が同じであるXMLを解析し、それを要素全体に含める必要があるこの問題に遭遇しました。説明が少し難しいので、以下のコードを参照してください。

<tns:camera>

<tns:congestionLocations>
<tns:congestion>Free Flow</tns:congestion>
<tns:direction>Eastbound</tns:direction>
</tns:congestionLocations>

<tns:congestionLocations>
<tns:congestion>Free Flow</tns:congestion>
<tns:direction>Westbound</tns:direction>
</tns:congestionLocations>


<tns:description>Bond St looking east</tns:description>
<tns:direction>Eastbound</tns:direction>
<tns:group>SH16-North-Western</tns:group>
<tns:lat>-36.869</tns:lat>
<tns:lon>174.746</tns:lon>
<tns:name>SH16 1 Bond St</tns:name>
<tns:viewUrl>http://www.trafficnz.info/camera/view/130</tns:viewUrl>
</tns:camera>

基本的に、要素全体 (tns:camera) を解析し、輻輳の場所 (明らかに互いに分離されている) を含める必要がありますが、リストビューでそれらすべてを使用するため、同じクラス内に...

どうすればこれを達成できますか?

現在、Pull Parser を使用して、クラス オブジェクトに解析しています。

PullParser コード:

case XmlPullParser.END_TAG:
                    if (tagname.equalsIgnoreCase(KEY_SITE)) {current Site
                        CameraSites.add(curCameraClass);
                    } else if (tagname.equalsIgnoreCase(KEY_DESCRIPTION)) {

                        curCameraClass.setDescription(curText);
                    }else if (tagname.equalsIgnoreCase(KEY_NAME)) {
                        curCameraClass.setName(curText);
                    }

                    break;

敬具!

4

2 に答える 2

0

これを試して..

        NodeList nodeList = doc.getElementsByTagName("tns:camera");

                for (int i = 0; i < nodeList.getLength(); i++) {

                    Node node = nodeList.item(i);       

                    Element fstElmnt = (Element) node;
                    NodeList nameList = fstElmnt.getElementsByTagName("tns:group");
                    Element nameElement = (Element) nameList.item(0);
                    nameList = nameElement.getChildNodes();

                    System.out.println("tns:group : "+((Node) nameList.item(0)).getNodeValue());


                    Element fstElmnt1 = (Element) node;
                    NodeList nameList1 = fstElmnt1.getElementsByTagName("tns:viewUrl");
                    Element nameElement1 = (Element) nameList1.item(0);
                    nameList1 = nameElement1.getChildNodes();

                    System.out.println("tns:viewUrl : "+ ((Node) nameList1.item(0)).getNodeValue());

//same as use to all tns:description,tns:direction and tns:lat etc.,


                    if(node.getNodeType() == Node.ELEMENT_NODE)
                    {
                        Element e = (Element) node;
                        NodeList resultNodeList = e.getElementsByTagName("tns:congestionLocations");
                        int resultNodeListSize = resultNodeList.getLength();
                        for(int j = 0 ; j < resultNodeListSize ; j++ )
                        {
                            Node resultNode = resultNodeList.item(j);
                            if(resultNode.getNodeType() == Node.ELEMENT_NODE)
                            {
                                Element fstElmnt2 = (Element) resultNode;
                                NodeList nameList2 = fstElmnt2.getElementsByTagName("tns:congestion");
                                Element nameElement2 = (Element) nameList2.item(0);
                                nameList2 = nameElement2.getChildNodes();

                                Log.v("tns:congestion", ""+((Node) nameList2.item(0)).getNodeValue());

                                Element fstElmnt3 = (Element) resultNode;
                                NodeList nameList3 = fstElmnt3.getElementsByTagName("tns:direction");
                                Element nameElement3 = (Element) nameList3.item(0);
                                nameList3 = nameElement3.getChildNodes();

                                Log.v("tns:direction--", ""+((Node) nameList3.item(0)).getNodeValue());
                            }
                        }
                    }

                }
于 2013-09-04T05:08:09.917 に答える