XML可扩展的标记语言 CDATA标记 XML的解析 SAX解析 使用JDOM的解析 DOM4J

XML:可扩展的标记语言
HTML:超文本标记语言

xml与HTML的区别
比较的内容         HTML           XML
可扩展性        不具备扩展性     具备扩展性

侧重点         侧重于显示信息    侧重于描述信息

语法要求       不要求标记的嵌套  严格要求嵌套、配对                        
              不要求标记的配对  遵循一定的结构顺序的              
              不要求标记之间
              具有一定的顺序
              
可读性         难于阅读、维护   结构清晰的便于阅读以及维护

数据和显示关系  内容与描述混合   内容的描述与显示相分离
               在一起

保值性         不具备保值性       具有保值性

XML文件的组成
由前导区以及数据区组成的

  • 前导区有以下三种属性构成:
    version:表示使用的XML版本,一般都是从1.0开始
    encoding:页面中使用文字的编码,如果有中文则要指定相对应的支持中文的编码。
    standalone:此XML文件是否独立运行,需要进行显示可以使用CSS或XSL控制。
    注意:在进行XML前导区声明的时候,其中的3个属性必须按照固定的顺序编写。
  • 数据区:
    所有的数据区必须有一个根元素,一个根元素下面可以存放多个子元素,
    但是要求每一个元素都必须完结,每一个标记都是区分大小写的。

CDATA标记:
用来标识文件数据,当XML解析器处理到CDATA标记的时候,它不会解析该段数据中的任何符号以及标记,只是将原数据原封不动的传递给应用程序。
CDATA标记的语法:<![CDATA[不需要解析的内容]]>

XML的解析:
在XML中由于更多的是描述信息的内容,所以在得到一个XML文档后应该利用程序按照其中元素的定义名称取出对应的内容,这样的操作就称为XML的解析。

在XML的解析中,W3C给我们定义SAX和DOM两种解析方式。
DOM解析操作:
将我们的XML文档,当做一个DOM树状结构的模型,通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称为随机访问机制。
优点 :可以随意访问DOM结构中的任何的一部分数据
缺点:将所有的数据一次性的转换为DOM结构的树,存放在内存中,因此当数据很大,或者是结构很复杂的时候,对于内存的需求比较大。

想要使用DOM方式进行XML的解析,需要以下的接口:
1.document:此接口代表了整个XML文档,表示整颗DOM树的根。提供可对文档中数据进行访问的方法。
2.node:表示文档树中的每一个节点
3.nodelist:表示文档树中的一组节点

实例:DOM方式生成XML文件

<?xml version="1.0" encoding="GBK" ?>
<addresslist>
       <linkman>
              <name>张三</name>
              <email>[email protected]</email>
       </linkman>
</addresslist>

步骤:
1.建立DocumentBuilderFactory对象
2.建立DocumentBuilder
3.建立Document对象
注意:生成XML文件的时候,我们创建的空白的Document对象。
4.创建DOM结构中的节点
5.对标签设置内容以及关系
6.建立TranformerFactory对象,用来创建Transformer
7.建立Transformer对象,利用此对象提供的transformer方法将DOM对象输出到文件中。
8.设置输出的XML文件的字符集格式
9.建立DOMSource对象,用此对象可以选择将哪一个DOM结果进行输出。
10.建立StreamResult对象,用来执行将文档内容输出到哪一个文件中
11.调用Transformer的transformer方法进行输出

public class DomCreateXML{
    public static void main(String[] args){
        createXML();
    }
    public static void createXML(){
      //1.建立DocumentBuilderFactory对象
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      try{
      //2.建立DocumentBuilder
      DocumentBuilder builder = DocumentBuilder.newDocumentBuilder();
      //3.建立Document 
      Document doc = builder.newDocument();
      //4.创建DOM结构中的节点
      Element addresslist = doc.createElement("addresslist");
      Element linkman = doc.createElement("linkman");
      Element name= doc.createElement("name");
      Element email= doc.createElement("email");
      //5.对标签设置内容以及关系
      name.appendChild(doc.createTextNode("张三"));
      email.appendChild(doc.createTextNode("[email protected]"));
      linkman.appendChild(name);
      linkman.appendChild(email);
      addresslist .appendChild(linkman);
      doc.appendChild(addresslist);
      //6.建立TranformerFactory对象,用来创建Transformer
      TranformerFactory tf = TranformerFactory.newInstance();
      //7.建立Transformer对象,利用此对象提供的transformer方法将DOM对象输出到文件中
      Transformer t = tf.newTransformer();
      //8.设置输出的XML文件的字符集格式
      t.setOutputProperty(OutputKeys.ENCODING,"GBK");
      //9.建立DOMSource对象,用此对象可以选择将哪一个DOM结果进行输出
      DOMSource ds = new DOMSource(doc);
      //10.建立StreamResult对象,用来执行将文档内容输出到哪一个文件中
      StreamResult sr = new StreamResult(new File("d:"+File.separator+"linkman.xml"));
      //11.调用Transformer的transformer方法进行输出
      t.transform(ds,sr);
      }catch (SAXException e) {
          //TODO Auto-generated catch block
          e.printStackTrace();
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值