传智播客—XML基础(下)
今天继续讲XML,争取在下午5点前占领XML高地。一共三个主要内容:SAX解析技术,DOM4J和SCHEMA。
首先是SAX解析技术:SAX采用事件处理的方式解析XML文件。利用 SAX 解析 XML 文档,涉及两个部分:解析器和事件处理器。
解析器负责读取 XML 文档,并向事件处理器发送事件
事件处理器负责对事件做出相应,对传递的 XML 数据进行处理
1.使用SAXParserFactory创建SAX解析工厂
SAXParserFactory spf = SAXParserFactory.newInstance();
2.通过SAX解析工厂得到解析器对象
SAXParser sp = spf.newSAXParser();
3.通过解析器对象得到一个XML的读取器
XMLReader xmlReader = sp.getXMLReader();
4.设置读取器的事件处理器
xmlReader.setContentHandler(new BookParserHandler());
5.解析xml文件
xmlReader.parse("book.xml");
当在第三步拿到一个XML的读取器后,就应该向事件处理器发送事件了,这时你所写的事件处理的方法就应该实现ContentHandler的所有方法,因为ContentHandler是一个接口类,这样一来就比较麻烦了,因为我们只关系这个接口类中的三个方法:characters(参数...),startElement(参数...),endElement(参数...)。
现在我们查看API文档发现SUN公司已经为我们写好了一系列的实现类,这里我们用DefaultHandler这个实现类。在这个类里面我们重写了上面三个方法,来实现我们想要的功能。
接下来开始了dom4j。Dom4j是一个简单、灵活的开放源代码的库。dom4j使用接口和抽象基类,Dom4j的API相对要复杂一些,但它提供了更好的灵活性。Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。使用Dom4j开发, 需要下载dom4j相应的jar文件。
DOM4j中,获得Document对象的方式有三种:
1.读取XML文件,获得document对象:
SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));
2.解析XML形式的文本,得到document对象
String text = "<members></members>";
Document document = DocumentHelper.parseTex
相关文档:
一个定义Email的例子
<?xml version="1.0">
<!DOCTYPE message[
<!ELEMENT message(header,body,signature,footer)> --定义了message的子元素
<!ELEMENT header(date,from,to,subject,banner)> --header还有子元素
<!ELEMENT ......
今天是上课的第一天,没想到第一天就讲了那么多的东西,看了看老师的PPT,发现东西虽然多,但是都不难理解,还是比较容易的。哈哈,得益于在传智基础班的锤炼,英明的决定就是从头学起。
刚过完春节老方的话还是说的不是很流利啊(要加强普通话练习喔 ......
1、初始化
Load 导入一个XML文件到CMarkup的对象中,并对它进行解析。类似C#的Load。
SetDoc 从字符串中导入XML数据,并对它解析。类似C#的LoadXml。
2、输出
Save 将XML数据写入文件中。类似C#的Save。
GetDoc 将整个XML数据文档作为字符串返回。
3、改变当前位置
FindElem 定位到下一个元素,可能和一个标签名或路 ......
using System;
using System.Data;
using System.IO;
using System.Xml;
using System.Text;
// 相应C#代码:
private string ConvertDataTableToXML(DataTable xmlDS)
{
MemoryStream stream = null;
XmlTextWriter writer = null;
try
{
stream = new MemoryStream();
writer = new XmlTextWriter(stream, E ......