zoukankan      html  css  js  c++  java
  • XML(内部DTD、外部DTD、XML的解析)

    XML(EXtensible Markup Language) 可扩展标记语言,它的作用是传输和保存数据,可以自定义标签。

    1、内部DTD,在XML文档内,只对当前XML有效。

    (1)DTD(文档类型定义),对XML文件的格式进行定义。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE animals[
    <!ELEMENT animals (animal+)>
    <!ELEMENT animal (name,color,favorite)>
    <!ELEMENT animal id CDATA #REQUIRED>
    <!ELEMENT name (#PCDATA)>//不能再加其他标签
    <!ELEMENT color (#PCDATA)>
    <!ELEMENT faxorite (#PCDATA)>
    ]>
    <animals>
    <animal id="1">
    <name>rabbit</name>
    <color>white</color>
    <favorite>胡萝卜</favorite>
    </animal>
    <animal id="2">
    <name>sheep</name>
    <color>black</color>
    <favoriate>青草</favoriate>
    </animal>
    </animals>

    (2)知识点总结:

    <?xml version="1.0" encoding="UTF-8"?>

    指明了版本号和字符集。

    <name>rabbit</name>

    为一个元素。

    id=“1”为一个属性,属性必须用双引号。

    根元素为animals,意味着此元素不能被其他元素包围,有且仅有一个。

    常见的字符:

    ? : 只能出现一次

    *  :任意次

    + : 一次或多次

    (3)属性的声明:

    CDATA:字符数据

    #REQUIRED:必须出现

    #IMPLIED:不是必须出现

    2、外部DTD

    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT animals (animal+)>
    <!ELEMENT animal (name,color,favorite)>
    <!ELEMENT animal id CDATA #REQUIRED>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT color (#PCDATA)>
    <!ELEMENT faxorite (#PCDATA)>
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE animals STSTEM "Animal.dtd">
    <animals>
    <animal id="1">
    <name>rabbit</name>
    <color>white</color>
    <favorite>胡萝卜</favorite>
    </animal>
    <animal id="2">
    <name>sheep</name>
    <color>black</color>
    <favoriate>青草</favoriate>
    </animal>
    </animals>

     3、XML的解析:

    (1)获取元素:

    package pers.xml.dtd;
    
    import java.io.File;
    import java.util.Iterator;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;
    public class Test {
        public static void main(String[] args) throws DocumentException {
            SAXReader reader = new SAXReader();
            Document doc = reader.read(new File("src/Animals.xml"));
            Element root = doc.getRootElement();
            System.out.println("根元素"+root.getName());
            Iterator<?> it = root.elementIterator();
            while (it.hasNext()) {
                Element e = (Element) it.next();
                System.out.println( e.getName());
                org.dom4j.Attribute id = e.attribute("id");
                System.out.println(id.getValue());
                Element name = e.element("name");
                Element color = e.element("color");
                Element favorite = e.element("favorite");
                System.out.println(name.getName() + "   " + name.getStringValue());
                System.out
                        .println(color.getName() + "   " + color.getStringValue());
                System.out.println(favorite.getName() + "   "+ favorite.getStringValue());
                System.out.println("----------------------------------------------------");
            }
        }
    }

    被读取的XML文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <animals>
    <animal id="1">
    <name>rabbit</name>
    <color>white</color>
    <favorite>胡萝卜</favorite>
    </animal>
    <animal id="2">
    <name>sheep</name>
    <color>black</color>
    <favorite>青草</favorite>
    </animal>
    </animals>

    文件里面的对于dtd的引用应删除:

    <!DOCTYPE animals STSTEM "Animal.dtd">

    (2)增加元素:

    package pers.xml.dtd;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Writer;
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    public class Test1 {
    public static void main(String[] args) throws IOException {
        Document doc=DocumentHelper.createDocument();
        Element root = doc.addElement("Animals");
        Element Animal = root.addElement("Animal");
        Animal.addAttribute("id", "A1");
        Element name=Animal.addElement("name");
        Element color = Animal.addElement("color");
        Element favorite = Animal.addElement("favorite");
        name.addText("骆驼");
        color.addText("白");
        favorite.addText("沙漠");
        Writer writer= new FileWriter(new File("src/Animals1.xml"));
        doc.write(writer);
        writer.close();
        
        
    }
    }

    程序运行后增加的文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Animals>
        <Animal id="A1">
            <name>骆驼</name>
            <color>白</color>
            <favorite>沙漠</favorite>
        </Animal>
    </Animals>
  • 相关阅读:
    旅行计划(拓扑排序)
    Extended traffic
    Tram(最短路)
    Cow and Friend(贪心)
    Invitation Cards(SPFA + 反向建边)
    Johnny and Another Rating Drop(找规律)
    python连接服务器上传文件,后台执行命令
    linux杀死某个进程
    linux安装杀毒软件
    django项目同一用户不能同时登陆
  • 原文地址:https://www.cnblogs.com/zhai1997/p/11439664.html
Copyright © 2011-2022 走看看