xml的解析读写

xml编写方式一:直接在xml文件中写,语法与html较类似不详细讲
xml编写方式二:通过dom4j来构建document对象,组建树状结构来描述一个xml文档,并写入文件中。

/**
 * 创建Document对象
 */
public static Document createDocument(){
    return DocumentHelper.createDocument();
} 
/**
 * 测试写出xml文件
 */
public static void testWriteXml(){
    Document doc = createDocument();
    //添加根元素
    Element root = doc.addElement("project");
    //向根元素中添加名为path的子元素
    Element ele = root.addElement("path")
    //为path元素添加属性id,其值为cp
    ele.addAttribute("id","cp");
    //添加文本信息
    ele.addText("content");
    //将xml写入到文件中
    XMLWriter writer = new XMLWriter();  //构建相应的xml输出流
    FileOutputStream fos = new FileOutputStream("builder.xml");
    writer.setOutputStream(fos);
    //将Document对象输出到文件中
    writer.writer(doc);
    writer.close();
}

xml解析

SAX解析方式:
sax相比于dom,sax解析速度更快,更有效,它逐行扫描文档,一边扫描一边解析,相比于dom,sax可以在解析文档的任意时刻停止解析。
优点:解析可以立即开始,没有内存压力
缺点:不能对节点进行修改
DOM解析方式
dom是w3c组织推荐的一种处理xml文档的方式,它会把文档中的所有元素按照它的层次关系解析成一个个的Node对象(节点)。
优点:把xml文件在内存中构造成树形结构,可以遍历和修改节点
缺点:如果文件较大,可能会有内存压力,解析时间会比较长

SAXReader读取xml文档:
SAXReader需要导入dom4j-full.jar包。它是DOM4j的一个核心api,用于读写xml文档
DOM4j是java的xml api,用于读写xml文件。

public static Document readXML(String filename) 
                                            throws DocumentException{
    try {
        //创建SAXReader 
            SAXReader reader = new SAXReader();
        //读取指定文件
            Document doc = reader.read(new File(filename));
        return doc;
    } catch (DocumentException e) {
        e.printStackTrace();
        throw e;
    }
}
try {
        Document doc = readXML("build.xml");
        //获取根元素 
            Element root = doc.getRootElement();
    } catch (Exception e) {
        e.printStackTrace();
    } 

Element

Element element(String name) 获取当前元素下指定的子元素
List elements() 获取当前元素下的所有子元素
String getName() 用户获取当前元素的名字
String getText() 获取元素的文本节点(其实标记与结束标记之间的文本)
Attribute attribute(String name) 获取当前元素的指定名字的属性

Attribute

String getName() 获取属性的名字
String getValue() 获取属性的值

XPATH

XPath是一门在xml文档中查找信息的语言,它可以根据路径,属性甚至是条件进行节点的检索。
路径表达式语法:
斜杠(/)作为路径内部的分隔符。
同一个节点有绝对路径和相对路径两种写法:
绝对路径必须用 “/” 起首,后面紧跟根节点,比如/step/step/…
相对路径不以“/”起首
"."表示当前节点。
"…"表示当前节点的父节点(两个点)
nodename(节点名称):表示选择该节点的所有子节点
“/”:表示选择根节点
“//”:表示选择任意位置的某个节点
“@”: 表示选择某个属性

常用路径表达式
在这里插入图片描述
谓语:就是对路径表达式的附加条件,所有的条件写在方括号“[]”中,表示对节点进行进一步的筛选。常用谓语:
在这里插入图片描述
通配符
"*"表示匹配任何元素节点。
"@"表示匹配任何属性值。
node()表示匹配任何类型的节点。
常用通配符用法:
在这里插入图片描述

Dome4j对XPth的支持

DOM4J支持使用XPATH来检索xml内容,使用需要引入jaxen-xx-xx.jar的包
Document提供了一个支持对XPATH检索的方法:
List selectNodes(String xpath)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值