Heim >Backend-Entwicklung >XML/RSS-Tutorial >Vermitteln Sie ein tiefgreifendes Verständnis von XML
1. XML: erweiterbare Markup-Sprachversion="1.0"
Erweiterbar: alle Tags werden angepasst
Funktion: Datenspeicherung
Konfigurationsdatei
Datenübertragung
Der Unterschied zwischen HTML und xml
HTML-Syntax ist locker, XML-Syntax ist streng
HTML wird für die Seitenanzeige verwendet, XML wird für die Datenspeicherung verwendet
Html alle Tags sind vordefiniert, XML alle Tags sind angepasst
2. XML-Syntax:
Dokumentdeklaration
Version Versionsnummer fester Wert 1.0
Kodierung des angegebenen Dokuments Der Standardwert der Codetabelle ist iso-8859-1
eigenständig. Geben Sie an, ob das Dokument unabhängig ist.
muss im XML-Dokument geschrieben werden. Eine Zeile
wird wie folgt geschrieben: 41d1bdbe64b863f2b16c14c0adc44b32
Attribute
Tags im Element-XML-Dokument
Bei Elementnamen muss die Groß-/Kleinschreibung beachtet werden
Zahlen dürfen nicht mit beginnen
Es muss und darf nur ein Wurzelelement im Dokument geben
Das Element muss korrekt geschlossen werden6c04bd5ca3fcae76e30b72ad730ca86ddbf4a1b9d12965251b02d12dd197d73e 37baec97b8e6a5b59e5a3b91c3d20a20
<?xml version="1.0"?> <xsd:schema xmlns="www.itheima.cn/xml" xmlns:xsd="www.w3.org/2001/XMLSchema" targetNamespace="www.itheima.cn/xml" elementFormDefault="qualified"> <xsd:element name="students" type="studentsType"/> <xsd:complexType name="studentsType"> <xsd:sequence> <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="studentType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="ageType" /> <xsd:element name="sex" type="sexType" /> </xsd:sequence> <xsd:attribute name="number" type="numberType" use="required"/> </xsd:complexType> <xsd:simpleType name="sexType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="male"/> <xsd:enumeration value="female"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ageType"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="256"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="numberType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="itheima_\d{4}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> <?xml version="1.0" encoding="UTF-8" ?>
<students xmlns="www.itheima.cn/xml" xsi:schemaLocation="www.itheima.cn/xml student.xsd" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" > <student number="itheima_1001"> <name>asfd</name> <age>12</age> <sex>male</sex> </student> </students> <students xmlns:itheima="www.itheima.cn/xml" xsi:schemaLocation="www.itheima.cn/xml student.xsd" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" > <itheima:student number="itheima_1001"> <itheima:name>asfd</itheima:name> <itheima:age>12</itheima:age> <theima:sex>male</itheima:sex> </itheima:student> </itheima:students>
<!ELEMENT students (student*) > <!ELEMENT student (name,age,sex)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> <!ELEMENT sex (#PCDATA)> <!ATTLIST student number ID #REQUIRED> 唯一的,必须的 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE students SYSTEM "student.dtd"> <students> <student number="s0001" > <name>zs</name> <age>abc</age> <sex>yao</sex> </student> </students>
public classTestXPath2 { @Test publicvoidtest()throwsException{ SAXReaderread= new SAXReader(); Documentdocument= read.read("src/Dom4jTest.xml"); Listnodes= document.selectNodes("/bookstore//book/title"); for(inti= 0;i< nodes.size();i++) { Nodenode= (Node)nodes.get(i); System.out.println(node.getText()); } } }
创建解析器 SAXReader reader = new SAXReader()
解析xml 获得document对象 Document document = reader.read(url)
// nodename 选取此节点。
// / 从根节点选取。
// // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
// .. 选取当前节点的父节点。
// @ 选取属性。
// [@属性名] 属性过滤
// [标签名] 子元素过滤
@Test
//遍历所有元素节点
publicvoidtest2()throwsException{ //创建一个xml解析对象 SAXReaderreader= new SAXReader(); //把xml文档加载到document对象中 Documentdocument= reader.read("src/Book.xml"); Elementroot= document.getRootElement(); treeWalk(root); } privatevoidtreeWalk(Elementele){ //输出当前节点的名字 System.out.println(ele.getName()); //ele.nodeCount()得到当前节点的所有子节点的数量 for(inti= 0;i<ele.nodeCount();i++){ //取出下标为i的节点 Nodenode= ele.node(i); //判断当前节点是否为标签 if(nodeinstanceofElement){ //把node强转为标签(Element) treeWalk((Element)node); } } } }
public classTestDom4j { @Test publicvoidtest1()throwsException{ //创建一个xml解析对象 SAXReaderreader= new SAXReader(); //把xml文档加载到document对象中 Documentdocument= reader.read("src/Book.xml"); Elementroot= document.getRootElement(); // Element bookNode = root.element("书"); // System.out.println(bookNode.getName()); //得到当前节点所有的子节点 Listlist= root.elements(); //得到第二本书对象 ElementsecondBook= (Element)list.get(1); //得到当前节点的文本内容 Stringname= secondBook.element("书名").getText(); System.out.println(name); }
导入jar包 dom4j.jar
创建解析器
解析xml 获得document对象
SAXReader reader = new SAXReader()
Document document = reader.read(url)
JAXP sun公司提供的解析 支持dom和sax
JDOM
DOM4J dom for java民间方式,但是是事实方式,非常好,支持dom
解析xml
XPATH 专门用于查询
Das obige ist der detaillierte Inhalt vonVermitteln Sie ein tiefgreifendes Verständnis von XML. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!