xml解析(超全)---(一)

Dom(文档对象模型)文档象模型(Document Object ModelDOM)是公W3C 准,它被用于与平台及言无XML 文档内容、构和式的

动态访问和更新DOM 范被设计成可与任何言一起使用

DOM 的有效使用

如果您遵循几条基本原,您使用 DOM 经验将会著提高:

l          不要使用 DOM 文档。

l          尽可能使用 XPath 点或遍文档。

l          使用的函数来更方便地使用 DOM

第一:解析.xml文件

现有user.xml

<?xml version="1.0" encoding="GB2312" ?>

<result>

<user>

  <name>龙准</name>

  <age>25</age>

</user>

<user>

  <name>廖丽</name>

  <age>22</age>

</user>

 </result>

解析代码如下:

File file=new File("D://user.xml");

//得到DOM解析器的工厂实例

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

//通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器

DocumentBuilder builder=factory.newDocumentBuilder();

//解析XML文档,得到一个Document

Document docment=builder.parse(file);

//得到XML文档的根节点
//
DOM中只有根节点是一个org.w3c.dom.Element对象。

Element root=docment.getDocumentElement();

 

NodeList user=root.getElementsByTagName("user");

System.out.println("共有"+user.getLength()+"个用户,分别是:");

for(int v=0;v<user.getLength();v++){

String name=root.getElementsByTagName("name").item(v).

getFirstChild().getNodeValue();

String age=root.getElementsByTagName("age").item(v).

            getFirstChild().getNodeValue();

System.out.println(name+"   "+age);

}

打印结果:

共有2个用户,分别是:

龙准   25

廖丽   21

第二:直接解析xml字符串

StringBuffer xml=new StringBuffer("<?xml version=\"1.0\" encoding=\"GB2312\" ?> ");

        xml.append("<result>");

        xml.append("<user>");

        xml.append("<name>龙准</name>");

        xml.append("<age>25</age>");

        xml.append("</user>");

        xml.append("<user>");

        xml.append("<name>廖丽</name>");

        xml.append("<age>21</age>");

        xml.append("</user>");

        xml.append("</result>");

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

        DocumentBuilder builder=factory.newDocumentBuilder();

        ByteArrayInputStream bais=null;

        Document doc=null;

        bais=new ByteArrayInputStream(xml.toString().getBytes());

        if(bais!=null){

            doc=builder.parse(bais);

        }

        Element root=doc.getDocumentElement();

       

        NodeList user=root.getElementsByTagName("user");

        System.out.println("共有"+user.getLength()+"个用户,分别是:");

        for(int v=0;v<user.getLength();v++){

        String name=root.getElementsByTagName("name").item(v).

getFirstChild().getNodeValue();

        String age=root.getElementsByTagName("age").item(v).

getFirstChild().getNodeValue();

                  System.out.println(name+"   "+age);

        }

打印结果:

共有2个用户,分别是:

龙准   25

廖丽   21

解析.xml文件与直接解析xml字符串的区别:

解析.xml是:Document docment=builder.parse(file);

解析xml字符串:ByteArrayInputStream bais=null;

              Document doc=null;

              //把字符串转化成流

              bais=new ByteArrayInputStream(xml.toString().getBytes());

              if(bais!=null){

                 doc=builder.parse(bais);

               }



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值