XML

灰太狼 2023-08-17 16:10 29阅读 0赞

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

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

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

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE animals[
  3. <!ELEMENT animals (animal+)>
  4. <!ELEMENT animal (name,color,favorite)>
  5. <!ELEMENT animal id CDATA #REQUIRED>
  6. <!ELEMENT name (#PCDATA)>//不能再加其他标签
  7. <!ELEMENT color (#PCDATA)>
  8. <!ELEMENT faxorite (#PCDATA)>
  9. ]>
  10. <animals>
  11. <animal id="1">
  12. <name>rabbit</name>
  13. <color>white</color>
  14. <favorite>胡萝卜</favorite>
  15. </animal>
  16. <animal id="2">
  17. <name>sheep</name>
  18. <color>black</color>
  19. <favoriate>青草</favoriate>
  20. </animal>
  21. </animals>

知识点总结:

(1)

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

指明了版本号和字符集。

(2)

  1. <name>rabbit</name>

为一个元素。

(3)

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

(4)

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

(5)常见的字符

? : 只能出现一次

* :任意次

+ : 一次或多次

(6)属性的声明:

CDATA:字符数据

#REQUIRED:必须出现

#IMPLIED:不是必须出现

(2)外部DTD

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!ELEMENT animals (animal+)>
  3. <!ELEMENT animal (name,color,favorite)>
  4. <!ELEMENT animal id CDATA #REQUIRED>
  5. <!ELEMENT name (#PCDATA)>
  6. <!ELEMENT color (#PCDATA)>
  7. <!ELEMENT faxorite (#PCDATA)>
  8. <?xml version="1.0" encoding="UTF-8"?>
  9. <!DOCTYPE animals STSTEM "Animal.dtd">
  10. <animals>
  11. <animal id="1">
  12. <name>rabbit</name>
  13. <color>white</color>
  14. <favorite>胡萝卜</favorite>
  15. </animal>
  16. <animal id="2">
  17. <name>sheep</name>
  18. <color>black</color>
  19. <favoriate>青草</favoriate>
  20. </animal>
  21. </animals>

3、XML的解析:

(1)获取元素:

  1. package pers.xml.dtd;
  2. import java.io.File;
  3. import java.util.Iterator;
  4. import org.dom4j.Document;
  5. import org.dom4j.DocumentException;
  6. import org.dom4j.Element;
  7. import org.dom4j.io.SAXReader;
  8. public class Test {
  9. public static void main(String[] args) throws DocumentException {
  10. SAXReader reader = new SAXReader();
  11. Document doc = reader.read(new File("src/Animals.xml"));
  12. Element root = doc.getRootElement();
  13. System.out.println("根元素"+root.getName());
  14. Iterator<?> it = root.elementIterator();
  15. while (it.hasNext()) {
  16. Element e = (Element) it.next();
  17. System.out.println( e.getName());
  18. org.dom4j.Attribute id = e.attribute("id");
  19. System.out.println(id.getValue());
  20. Element name = e.element("name");
  21. Element color = e.element("color");
  22. Element favorite = e.element("favorite");
  23. System.out.println(name.getName() + " " + name.getStringValue());
  24. System.out
  25. .println(color.getName() + " " + color.getStringValue());
  26. System.out.println(favorite.getName() + " "+ favorite.getStringValue());
  27. System.out.println("----------------------------------------------------");
  28. }
  29. }
  30. }

被读取的XML文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <animals>
  3. <animal id="1">
  4. <name>rabbit</name>
  5. <color>white</color>
  6. <favorite>胡萝卜</favorite>
  7. </animal>
  8. <animal id="2">
  9. <name>sheep</name>
  10. <color>black</color>
  11. <favorite>青草</favorite>
  12. </animal>
  13. </animals>

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

  1. <!DOCTYPE animals STSTEM "Animal.dtd">

1392562-20190901193946869-1707195652.png

(2)增加元素:

  1. package pers.xml.dtd;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.Writer;
  6. import org.dom4j.Document;
  7. import org.dom4j.DocumentHelper;
  8. import org.dom4j.Element;
  9. public class Test1 {
  10. public static void main(String[] args) throws IOException {
  11. Document doc=DocumentHelper.createDocument();
  12. Element root = doc.addElement("Animals");
  13. Element Animal = root.addElement("Animal");
  14. Animal.addAttribute("id", "A1");
  15. Element name=Animal.addElement("name");
  16. Element color = Animal.addElement("color");
  17. Element favorite = Animal.addElement("favorite");
  18. name.addText("骆驼");
  19. color.addText("白");
  20. favorite.addText("沙漠");
  21. Writer writer= new FileWriter(new File("src/Animals1.xml"));
  22. doc.write(writer);
  23. writer.close();
  24. }
  25. }

程序运行后增加的文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Animals>
  3. <Animal id="A1">
  4. <name>骆驼</name>
  5. <color></color>
  6. <favorite>沙漠</favorite>
  7. </Animal>
  8. </Animals>

转载于:https://www.cnblogs.com/zhai1997/p/11439664.html

发表评论

表情:
评论列表 (有 0 条评论,29人围观)

还没有评论,来说两句吧...

相关阅读

    相关 XMLXML - Schema

    Xml Schema类似于DTD,定义了XML文档的逻辑结构,基本功能如下: a、定义可出现在文档中的元素及元素属性。 b、定义哪个元素是子元素。 c、定义子元素的次

    相关 XMLXML - DTD

    DTD即Document Type Definition文档类型定义,规定了XML文档的逻辑结构,可在XML文档中声明,也可作为一个外部引用。通过DTD,我们可以知道XML文档