据,从而可以决定如何对数据进行处理。
1、创建解析工厂;
SAXParserFactory fac = SAXParserFactory.newInstance();
2、获取解析器;
SAXParser sp = fac.newSAXParser();
3、得到读取器;
XMLReader re = sp.getXMLReader();
4、设置内容处理器;
re.setContentHandler(new ContentHandler(){ /*实现接口的代码块*/});
(或者:re.setContentHandler(new DefaultHandler());/*参数为DefaultHandler类的子类*/)
第一种方法是解析整个XML文档,第二种方法可以只解析某个标签;
其实还有一种内容处理器,也是先继承DefaultHandler类,然后把解析的内容封装到bean对象中。
5、读取XML文档内容;
re.parse("*.xml");
======================================================================================================
XML解析开发包:
2、dom4j:
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new File());
OutputFormat format = OutputFormat.createPrettyPrint();//该对象标明格式按漂亮的格式进行输出;另外还有一个对象是按紧凑的格式进行输出;
format.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(),format);
xmlWriter.write(doc);//如果xmlWriter对象采用的流是字节流,那么该对象会先把doc对象按format对象给定的编码格式转换成字节,然后把数据交给字节流进行操作。
writer.close();//最后要关闭资源
======================================================================================================
XPath:
使用XPath可以快速定位到某个节点;
List list = document.selectNodes("//foo/bar");//获取foo节点下的所有bar节点;
Node node = document.selectSingleNode("//foo/bar");//获取foo节点下的第一个bar节点;
单斜杠是绝对路径即从根节点开始;
双斜杠是相对路径即从所有当前节点开始;
星号“*”表示选择所有由星号之前的路径所定位的元素;
例如:
/aa/bb/*表示选择所有路径依附于/aa/bb的元素;
/*/*/*/bbb表示选择所有的有3个祖先元素的bbb元素;
//bb[@*]表示选择有任意属性的bb元素;
//bb[not(@*)]表示选择没有属性的bb元素;
//bb[@id='b1']表示选择含有属性id='b1'的bb元素;
|