Heim  >  Artikel  >  类库下载  >  Verwenden von xpath zum Parsen von XML in Java

Verwenden von xpath zum Parsen von XML in Java

高洛峰
高洛峰Original
2016-10-09 16:36:191685Durchsuche

xpath ist eine Sprache zum Auffinden von Informationen in XML-Dokumenten. xpath wird zum Navigieren durch Elemente und Attribute in XML-Dokumenten verwendet. Sein Rückgabewert kann Knoten, Knotensammlungen, Text und eine Mischung aus Knoten und Text usw. sein.
Bevor Sie dieses Dokument studieren, sollten Sie über ein gewisses Verständnis von XML-Knoten, Elementen, Attributen, Text, Verarbeitungsanweisungen, Kommentaren, Stammknoten, Namespaces und Knotenbeziehungen sowie xpath verfügen.
XML-Lernadresse: http://www.runoob.com/xml/xml-tutorial.html
XPath-Grundsyntax-Lernadresse: http://www.runoob.com/xpath/xpath-tutorial.html
Offizielles XPath-Dokument: https://yunpan.cn/cvc4tEIGy5EvS Zugriffskennwort 9d16
In diesem Artikel wird hauptsächlich Folgendes vorgestellt: Verwendung der XPath-Operation zum Betreiben von XML in Java.
1) Erstens, wie man die XPath-Technologie in dom4j verwendet
Importieren Sie das von xPath unterstützte JAR-Paket. jaxen-1.1-beta-6.jar (Importieren Sie zuerst das dom4j-Paket, dom4j-Download-Adresse: http://www.dom4j.org/dom4j-1.6.1/).

Verwenden von xpath zum Parsen von XML in Java

Wie im Bild nach Anleitung des Pakets gezeigt:

Verwenden von xpath zum Parsen von XML in Java



Wenn Sie nicht wissen, wie Sie das Paket importieren, lesen Sie bitte meinen vorherigen Blog: Zusammenfassung zum Abrufen von XML-Knoten in Java und zum Lesen von XML-Dokumentknoten
2) Es gibt zwei Hauptmethoden zur Verwendung der XPath-Methode in Java Point:
List selectNodes("xpath expression"); Fragen Sie mehrere Knotenobjekte ab
Node selectSingleNode("xpath expression"); Fragen Sie ein Knotenobjekt ab
Das Folgende verwendet Beispiele, um die Verwendung zu veranschaulichen.

1. So verwenden Sie selectNodes:

package com.vastsum.demo;

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 
 * @author shutu008
 *selectNode的使用方法
 */
public class xpathDemo {

    public static void main(String[] args) throws Exception {

    Document doc = new SAXReader().read(new File("./src/contact.xml"));
        
        /**
         * @param xpath 表示xpath语法变量
         */
    String xpath="";
        
        /**
         * 1.      /      绝对路径      表示从xml的根位置开始或子元素(一个层次结构)
         */
        xpath = "/contactList";
        xpath = "/contactList/contact";
        
        /**
         * 2. //     相对路径       表示不分任何层次结构的选择元素。
         */
        xpath = "//contact/name";
        xpath = "//name";
        
        /**
         * 3. *      通配符         表示匹配所有元素
         */
        xpath = "/contactList/*"; //根标签contactList下的所有子标签
        xpath = "/contactList//*";//根标签contactList下的所有标签(不分层次结构)
        
        /**
         * 4. []      条件           表示选择什么条件下的元素
         */
        //带有id属性的contact标签
        xpath = "//contact[@id]";
        //第二个的contact标签
        xpath = "//contact[2]";
        //选择最后一个contact标签
        xpath = "//contact[last()]";
        
        /**
         * 5. @     属性            表示选择属性节点
         */
        xpath = "//@id"; //选择id属性节点对象,返回的是Attribute对象
        xpath = "//contact[not(@id)]";//选择不包含id属性的contact标签节点
        xpath = "//contact[@id='002']";//选择id属性值为002的contact标签
        xpath = "//contact[@id='001' and @name='eric']";//选择id属性值为001,且name属性为eric的contact标签
        
        /**
         *6.  text()   表示选择文本内容
         */
        //选择name标签下的文本内容,返回Text对象
        xpath = "//name/text()";
        xpath = "//contact/name[text()='张三']";//选择姓名为张三的name标签
        
        
        List<Node> list = doc.selectNodes(xpath);
        for (Node node : list) {
            System.out.println(node);
        }
    
        //写出xml文件
        //输出位置
        FileOutputStream out = new FileOutputStream("d:/contact.xml");
        
        //指定格式
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(out,format);
        
        //写出内容
        writer.write(doc);
        
        //关闭资源
        writer.close();
        
    }
    

}

2. So verwenden Sie selectSingleNode

package com.vastsum.demo;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 
 * @author shutu008
 *selectSingleNode的使用
 */
 public class xpathDemo1{
     public static void main(String[] args) throws Exception{
         //读取XML文件,获得document对象
        SAXReader saxReader = new SAXReader();    
        Document doc = saxReader.read(new File("./src/contact.xml"));
        
        //使用xpath获取某个节点
        String xpath = "";
        
        //对contact元素 id="001"的节点,操作
        xpath = "//contact[@id = &#39;001&#39;]";
        Element contactElem =    (Element)doc.selectSingleNode(xpath);
        
        //设置这个节点的属性值
        contactElem.addAttribute("name", "001");
        
        //输出这个节点的所有属性值
        for(Iterator it = contactElem.attributeIterator();it.hasNext();){
        Attribute conAttr = (Attribute)it.next();
        String conTxt = conAttr.getValue();
        String conAttrName = conAttr.getName();
        System.out.println(conAttrName+" = "+conTxt);
        }
        
     }
 }


Stellungnahme:
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