A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zzj123 黑马粉丝团   /  2017-6-13 11:22  /  566 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAXP获取解析器
1 JAXP相关包
JAXP相关开发包:javax.xml
DOM相关开发包:org.w3c.dom
SAX相关开发包:org.xml.sax

2 JAXP与DOM、SAX解析器的关系
  JAXP只是作用只是为了让使用者不依赖某一特定DOM、SAX的解析器实现,当使用JAXP API时,使用者直接接触的就是JAXP API,而不用接触DOM、SAX的解析器实现API。

3 JAXP获取DOM解析器
  当我们需要解析XML文档时,首先需要通过JAXP API解析XML文档,获取Document对象。然后用户就需要使用DOM API来操作Document对象了。
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                factory.setValidating(false);
                DocumentBuilder builder = factory.newDocumentBuilder();
                Document doc = builder.parse("src/students.xml");

4 JAXP保存Document
当我们希望把Document保存到文件中去时,可以使用Transformer对象的transform()方法来完成。想获取Transformer对象,需要使用TransformerFactory对象。
与JAXP获取DOM解析器一样,隐藏了底层解析器的实现。也是通过抽象工厂来完成的,这里就不在赘述了。
                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer transformer = tFactory.newTransformer();
                trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                trans.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "students.dtd");
                trans.setOutputProperty(OutputKeys.INDENT, "yes");
                Source source = new DOMSource(doc);
                Result result = new StreamResult(xmlName);
                transformer.transform(source, result);

Transformer类的transform()方法的两个参数类型为:Source和Result,DOMSource是Source的实现类,StreamResult是Result的实现类。

5 JAXP创建Document
有时我们需要创建一个Document对象,而不是从XML文档解析而来。这需要使用DocumentBuider对象的newDocument()方法。
                DocumentBuilderFactory factory = DocumentBuilderFactory
                                        .newInstance();
                DocumentBuilder builder = factory.newDocumentBuilder();
                Document doc = builder.newDocument();
                doc.setXmlVersion("1.0");
                doc.setXmlStandalone(true);


5 学习DOM之前,先写两个方法
Document getDocument(String xmlName):通过xmlName获取Document对象;
void saveDocument(Document doc, String xmlName):保存doc到xmlName文件中。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马