xml编程
【xml编程】一个xml文件除了我们人去读写之外,还可以通过电脑去读写,通过电脑去读写xml文件的过程就是xml编程的过程。
1,xml解析:
要想使用电脑来读xml文件就要对文件进行解析,最主流的解析有:DOM,SAX解析。
@1,DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。
@2,SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。
2,使用sax解析xml文件代码:
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
public class saxTast {/**
* @param args
* @throws SAXException
* @throws ParserConfigurationException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
//创建解析器工厂
SAXParserFactory fac=SAXParserFactory.newInstance();
//通过工厂获取sax解析器
SAXParser par=fac.newSAXParser();
//获取读取器
XMLReader x=par.getXMLReader();
//注册事件处理器
x.setContentHandler(new MyContentHandler());
x.parse("xuexiao.xml");
}}
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
public class MyContentHandler implements ContentHandler {public void characters(char[] a, int arg1, int arg2) throws SAXException {
// TODO Auto-generated method stub
System.out.println(new String(a,arg1,arg2));
}public void endDocument() throws SAXException {
// TODO Auto-generated method stubSystem.out.println("文档解析结束了");
}public void endElement(String arg0, String arg1, String arg2)
throws SAXException {
// TODO Auto-generated method stub
System.out.println(arg2);
}public void endPrefixMapping(String arg0) throws SAXException {
// TODO Auto-generated method stub}public void ignorableWhitespace(char[] arg0, int arg1, int arg2)
throws SAXException {
// TODO Auto-generated method stub}public void processingInstruction(String arg0, String arg1)
throws SAXException {
// TODO Auto-generated method stub}public void setDocumentLocator(Locator arg0) {
// TODO Auto-generated method stub}public void skippedEntity(String arg0) throws SAXException {
// TODO Auto-generated method stub}public void startDocument() throws SAXException {
// TODO Auto-generated method stub
System.out.println("文档解析开始了");
}public void startElement(String arg0, String arg1, String arg2,
Attributes arg3) throws SAXException {
// TODO Auto-generated method stub
System.out.println("发现了开始标签"+arg2);
}public void startPrefixMapping(String arg0, String arg1)
throws SAXException {
// TODO Auto-generated method stub}}
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长