欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

XPath读取xml文件

程序员文章站 2022-07-11 16:50:36
1.创建解析工厂 2.创建解析器 3.读xml文件,生成w3c.docment对象树 4.创建XPath对象 5.通过路径查找对象 例子: 同一xpath路径下有多个Element对象 ......

1.创建解析工厂

2.创建解析器

3.读xml文件,生成w3c.docment对象树

4.创建xpath对象

5.通过路径查找对象

例子:

import javax.xml.parsers.documentbuilder;
import javax.xml.parsers.documentbuilderfactory;
import javax.xml.parsers.parserconfigurationexception;
import javax.xml.xpath.xpath;
import javax.xml.xpath.xpathconstants;
import javax.xml.xpath.xpathfactory;

import org.w3c.dom.document;

public class myxpathtest {

    /**
     * @param args
     */
    public static void main(string[] args) {
        
        try {
            //创建解析工厂
            documentbuilderfactory documentbuilderfactory=documentbuilderfactory.newinstance();
            //创建解析器
            documentbuilder builder=documentbuilderfactory.newdocumentbuilder();
            //通过解析器读取文件,生成w3c.dom.document象树
            document document=builder.parse("conf/55.xml");
            //创建xpath对象
            xpath xpath=xpathfactory.newinstance().newxpath();
//            <model id="057ea377-e531-422d-a181-3371b42e5bd0">
//                <ref>
//                    <node></node>
//                    <node></node>
//                </ref>
//                <ref>
//                    <node></node>
//                    <node></node>
//                </ref>
//            </model>
            //读取model中属性id的值
            string idpath="/model/@id";
            string id=(string) xpath.evaluate(idpath, document, xpathconstants.string);
            system.out.println("id="+id);
            
//            <model>
//            <ref>
//                <node></node>
//                <node></node>
//            </ref>
//            <ref>
//                <node id="057ea377-e531-422d-a181-3371b42e5bd0" nodetype="dynamicmolenode"></node>
//                <node></node>
//            </ref>
//        </model>
            string idnodepath="/model/node[@nodetype='dynamicmolenode']/@id";
            string idnode=(string) xpath.evaluate(idnodepath, document, xpathconstants.string);
            system.out.println("idnode="+idnode);
            
//            <model>
//            <ref>
//                <node></node>
//                <node></node>
//            </ref>
//            <ref>
//                <node id=" nodetype="dynamicmolenode">
//                    <node rtf="aaaaaaaa" nodetype="text" />
//                </node>
//                <node></node>
//            </ref>
//        </model>
            string rtfpath="/model/node[@nodetype='dynamicmolenode']/node[@nodetype='text']/@rtf";
            string rtf=(string) xpath.evaluate(rtfpath, document, xpathconstants.string);
            system.out.println("rtf="+rtf);
        } catch (exception e) {
            // todo auto-generated catch block
            e.printstacktrace();
        }
    }

}

 

同一xpath路径下有多个element对象

string path="/xtextdocument/xelements/element[@type='xtextbody']/xelements/element";
nodelist nodelist=(nodelist) xpath.evaluate(path,document, xpathconstants.nodeset); system.out.println("nodelist===="+nodelist.getlength());