XML解析

XML的两种解析方式:

DOM:根据xml的层级结构在内存中分配一个属性结构,将xml的标签,属性,文本都当做对象
优点:很方便的进行节点的增删改
缺点:如果文件过大,会造成内存溢出

SAX:采用事件驱动,边读边解析,从上到下一行一行的解析,解析到某一个对象将对象名称返回
优点:不会出现内存溢出,方便实现查询
缺点:不能进行增删改操作.

DOM和SAX是解析技术,但是需要解析器进行解析
sun公司的jaxp解析器,jdk中包含
dom4j公司的dom4j解析器,常用
jdom公司的jdom解析器
每个解析器都包含DOM和SAX技术

JAXP解析器

    // 获取解析器工厂
    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
    // 获取解析器
    DocumentBuilder domBuider = domFactory.newDocumentBuilder();
    // 根据文件路径获取文档对象
    Document dom = domBuider.parse("xml01/person.xml");
    // 根据标签名获取标签对象集合
    NodeList nameList = dom.getElementsByTagName("name");
    for (int i = 0; i < nameList.getLength(); i++)
    {
        // 通过item(i)方法,获取第i个节点
        Node node = nameList.item(i);
        // 获取节点内容
        String text = node.getTextContent();
        System.out.println(text);
    }

    NodeList personList = dom.getElementsByTagName("person");
    // 获取第一个person对象
    Node per = personList.item(0);
    // 创建一个节点元素
    Element sex = dom.createElement("sex");
    // 创建一个文本元素
    Text men = dom.createTextNode("men");
    // 将文本元素追加到节点元素中
    sex.appendChild(men);
    // 将sex节点添加到第一个person中
    per.appendChild(sex);

将内存中修改的内容保存到XML文件中

    // 将内存中的修改保存到文件中
    // 获取转变工厂
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    // 获取转变对象
    Transformer transformer = transformerFactory.newTransformer();
    // 将内存对象转存到文件中
    transformer.transform(new DOMSource(dom), new StreamResult("xml01/person2.xml"));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值