XPath ist eine A-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 ein Verständnis von XPath die Grundlage für viele fortgeschrittene XML-Anwendungen. Weitere Informationen zu XPath finden Sie unter http://www.php.cn/.
XPath eignet sich nur zum Abfragen von XML-Informationen. Es wird nicht empfohlen, diese Methode zum vollständigen Parsen von XML-Dateien zu verwenden ziehen. Zwei Möglichkeiten.
Ich habe diesen Test auf dem Android 2.2-System durchgeführt. Ich weiß nicht, ob es funktionieren wird, wenn es niedriger als 2.2 ist.
Lassen Sie uns im Detail über die Schritte des XPath-Parsings von XML sprechen: xpathTest.xml und android Die Art und Weise, wie Dom XML analysiert, ist die gleiche wie bei DomTest.xml in
1. Eingabequellen erstellen
2. Rufen Sie die XPathFactory-Instanz ab.
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(); } }
Hinweis: xpath.evaluate() 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.
Jemand hat gefragt, ob XPath große XML-Dateien abfragen kann (mehr als 1 Mio. oder so). Dies sollte theoretisch möglich sein, solange Sie Kann einfach das Problem lösen, dass InputSource Dateien mit großer Kapazität lesen kann.
Das Obige ist der Inhalt von Android XPath Parsing XML. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!