简单讲解:
XML eXtensible Markup Language 可扩展标记语言 作用:保存数据,用于数据的传递 常用于JAVA中框架的配置文件 1、XML的语法(掌握) a、xml 文件的第一行为声明 <?xml version="" encoding=""?> <?xml:声明当前文档为xml文档 version:版本号,1.0,1.1 encoding:编码 b、xml文件中总会有一对根元素 c、xml的标记必须有结尾 d、xml元素必须有正确的嵌套 e、实体 <:< >:> &:& f、CDATA区:存储带有特殊字符的文本数据 <![CDATA[ ...... ]]> g、注释 h、xml标记名区分大小写,属性值必须使用""或'', 属性通常需要给属性赋值 满足xml文件语法的要求xml文件,称为格式良好的xml文件 xml文档的解析器:浏览器,myeclipse,xml spy 2、DTD(Schema)(了解) Document Type Definition 作用:限制xml文件的结构 编写DTD,可以在xml文件内部,也可以定义单独的 DTD文件 引入:DTD a、引入一定范围内的DTD <!DOCTYPE 根元素 SYSTEM URL> b、引入一个公共的DTD <!DOCTYPE 根元素 PUBLIC "名字" URL> dtd,xml需求: 根元素:struts struts子元素:package,global-results零个或多个 package元素中有三个属性,name,extends,namespace global-results中有两个属性,name,type package子元素:action,零个或多个 action中三个属性:name(必须有),class(必须有),method action子元素:result,零个或多个 result中有两个属性:name(必须有),type <!ELEMENT struts .....> ......... <!ATTLIST..... > 3、JAVA 解析XML(掌握) a、解析XML,获取数据 b、java中的数据写入到XML文件中 JAVA中提供两种解析方式 DOM 解析 xml中的dom java SAX 解析 jdom/dom4j
实例代码:
TestDom4jWrite.java
package com.tarena.tts;
import java.io.FileOutputStream;
import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter;
public class TestDom4jWrite { public static void main(String[] args) throws Exception { // 创建一个空白的Document Document doc = DocumentHelper.createDocument(); Element root = doc.addElement("books"); for (int i = 0; i < 1000; i++) { Element book = root.addElement("book"); book.addElement("name").setText("Name" + i); book.addElement("price").setText((int) (Math.random() * 100) + ""); }
XMLWriter writer = new XMLWriter(new FileOutputStream( "d:/books.xml")); writer.write(doc); writer.close(); } }
TestDom4jRead.java
package com.tarena.tts;
import java.io.FileInputStream; import java.util.List;
import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;
public class TestDom4jRead { public static void main(String[] args) throws Exception { // SAXReader 用于读取XML文档 SAXReader reader = new SAXReader(); // Document 用于封装整个XML文档 Document doc = reader.read(new FileInputStream("d:/books.xml")); // Element 用于封装元素 Element root = doc.getRootElement();
//System.out.println(root.getName()); // List list = root.elements(); List<Element> bookList = root.elements("book"); for (Element book : bookList) { Element name = (Element)book.elements("name").get(0); System.out.println(name.getText()); }
} } TestSAX.java
package com.tarena.tts;
import java.io.FileInputStream;
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.AttributeList; import org.xml.sax.HandlerBase; import org.xml.sax.SAXException;
public class TestSAX { public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse(new FileInputStream("d:/books.xml"),new MyHandler());
}
}
class MyHandler extends HandlerBase { @Override public void startElement(String name,AttributeList attributes) throws SAXException { System.out.println(name + "开始"); }
@Override public void endElement(String name) throws SAXException { System.out.println(name + "结束"); }
}
TestXPath.java
package com.tarena.tts;
import java.io.FileInputStream; import java.util.List;
import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader;
public class TestXPath { public static void main(String[] args) throws Exception { /* * XPath... */ SAXReader reader = new SAXReader(); Document doc = reader.read(new FileInputStream("d:/books_new.xml"));
List<Element> list = doc .selectNodes("/books/book[price>=80 and price<90]/name");
for (Element name : list) { System.out.println(name.getText()); }
} }
运行环境需要Jar包:
dom4j-1.6.1.jar jaxen-1.1-beta-6.jar (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|