Android XPath analysiert XML

黄舟
Freigeben: 2017-02-09 13:55:50
Original
2121 Leute haben es durchsucht

XPath ist eine Sprache zum Auffinden von Informationen in XML-Dokumenten. XPath kann zum Durchlaufen von Elementen und Attributen in XML-Dokumenten verwendet werden.

XPath ist ein Hauptelement des W3C XSLT-Standards und sowohl XQuery als auch XPointer basieren auf XPath-Ausdrücken.

Daher ist das Verständnis von XPath die Grundlage für viele fortgeschrittene XML-Anwendungen. Weitere Informationen zu XPath finden Sie unter http://www.w3school.com.cn/xpath/index.asp.

XPath eignet sich nur zum Abfragen von XML-Informationen. Es wird empfohlen, diese Methode nicht zum vollständigen Parsen von XML-Dateien zu verwenden. Die besten Methoden zum Parsen von XML-Dateien sind Sax und Pull.

Ich habe diesen Test auf einem Android 2.2-System durchgeführt. Ich weiß nicht, ob es funktionieren wird, wenn es niedriger als 2.2 ist.

Das Folgende ist eine detaillierte Beschreibung der Schritte für XPath zum Parsen von XML: xpathTest.xml ist dasselbe wie DomTest.xml in der Android-Dom-Parsing-XML-Methode

1 Eingabequellen erstellen

2. Holen Sie sich eine XPathFactory-Instanz.

3. Verwenden Sie die XPathFactory-Instanz, um die XPath-Instanz abzurufen

4. XPath ruft die Methode „evaluate()“ auf, um die abgefragte NodeList abzurufen

private void xPathParserXml(){  
        //获取XPathFactory实例  
        XPathFactory factory = XPathFactory.newInstance();  
        //用工程生成XPath实例,解析xml  
        XPath xpath = factory.newXPath();  
        //  
        try {  
            InputSource source = new InputSource(getResources().getAssets().open("xPathTest.xml"));  
          
            //第一个参数:需要查询的节点名称,必须要在节点前加“//”  
            //第二个参数:查询的输入源  
            //第三个参数:返回的类型  
//          NodeList nodeList = (NodeList) xpath.evaluate("//group", source, XPathConstants.NODESET);  
//          if(nodeList != null && nodeList.getLength() > 0){  
//              for(int i = 0;i < nodeList.getLength();i++){  
//                  Node node = nodeList.item(i);  
//                  //在这也可以得到<group>的子节点<person>。但是这样不符合xpath的风格。  
//                  NodeList personList = node.getChildNodes();  
//                  Element  nodeAttr =(Element)node;  
//                  String groupName = nodeAttr.getAttribute("name");  
//                  String num = nodeAttr.getAttribute("num");  
//                    
//                  Log.e("TEST", ""+groupName+"   "+num);  
//              }  
//          }  
              
//          //获取<person>节点信息  
//          NodeList personList = (NodeList) xpath.evaluate("//person", source, XPathConstants.NODESET);  
//          if(personList != null && personList.getLength() > 0){  
//              for(int i = 0;i < personList.getLength();i++){  
//                  Element node = (Element)personList.item(i);  
//                  //在这也可以得到<person>的子节点<chinese>和<english>。  
//                  NodeList childList = node.getChildNodes();  
//                  String groupName = node.getAttribute("name");  
//                  String age = node.getAttribute("age");  
//                    
//                  Log.e("TEST", ""+groupName+"   "+age);  
//              }  
//          }  
              
            //获取<chinese>节点信息  
            NodeList chineseList = (NodeList) xpath.evaluate("//chinese", source, XPathConstants.NODESET);  
            if(chineseList != null && chineseList.getLength() > 0){  
                for(int i = 0;i < chineseList.getLength();i++){  
                    Node node = chineseList.item(i);  
                    String chinese = node.getTextContent();  
                    Log.e("TEST", ""+chinese);  
                }  
            }  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (XPathExpressionException e) {  
            e.printStackTrace();  
        }  
          
    }
Nach dem Login kopieren

Hinweis: xpath. evaluieren() Es kann nicht zweimal aufgerufen werden und es wird ein Fehler gemeldet. Der Grund ist unklar. Wenn Sie den Grund kennen, hinterlassen Sie uns bitte eine Nachricht, vielen Dank.

Einige Leute haben gefragt, ob XPath große XML-Dateien (mehr als 1 MB oder mehr) abfragen kann. Dies sollte theoretisch möglich sein, solange Sie das Problem lösen können, dass InputSource Dateien mit großer Kapazität lesen kann .

Das Obige ist der Inhalt von Android XPath, der XML analysiert. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (m.sbmmt.com).


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!