android使用XML-----DOM--------进阶
来源:互联网 发布:出售淘宝买家资料 编辑:程序博客网 时间:2024/06/03 12:21
当XML文件中含有ENTITY实体时,需要解析器,解析。主要步骤:
</pre></li></ol></p><pre name="code" class="java">DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setValidating(true);//该解析器在解析时验证 XML 内容。factory.setIgnoringElementContentWhitespace(true);//该解析器忽略元素内容中的可忽略空格。factory.setExpandEntityReferences(true);//将工厂配置为生成扩展实体引用节点的解析器。try {DocumentBuilder builder = factory.newDocumentBuilder();MyEntityResolver resolver = new MyEntityResolver();//设置解析器 public class MyEntityResolver implements EntityResolver 该类继承自<span style="font-family: Arial, Helvetica, sans-serif;">EntityResolver </span>ErrorHandler handler = new MyErrorHandler();//设置<span style="font-family: Arial, Helvetica, sans-serif;">ErrorHandler 来捕获SAXParseException异常 public class MyErrorHandler implements ErrorHandler</span><pre name="code" class="java"> 该类实现了自<span style="font-family: Arial, Helvetica, sans-serif;">ErrorHandler接口</span>
builder.setEntityResolver(resolver);// builder.setErrorHandler(handler);doc = (Document) builder.parse(xmlFile);} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}程序架构:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration [<!ELEMENT configuration (title)><!ELEMENT title (font)><!ELEMENT font (name,size,lable)><!ELEMENT name ANY><!ELEMENT size ANY><!ELEMENT lable ANY><!ENTITY label SYSTEM "label.dat">]><configuration><title><font><name>Helvetica</name><size>36</size><lable>&label;</lable></font></title></configuration>
XML 的一些注意事项:- 开启验证之后,必须要声明类型 如configuraiton
- <?xml > 必须是一体的不能分开 <? xml>
- &label; ;不能少
package com.lmk.test.dom_xml;import java.io.File;import java.io.IOException;import javax.script.SimpleScriptContext;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.ErrorHandler;import org.xml.sax.SAXException;import com.lmk.test.InfoUtil;public class DomXMLparser {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubDomXMLparser parser = new DomXMLparser();File xmlFile = new File("test.xml");if(!xmlFile.exists()){parser.createFile(xmlFile);}Document doc=parser.getDoc(xmlFile);parser.parse(doc);}private void parse(Document doc) {// TODO Auto-generated method stubElement configuration = (Element) doc.getDocumentElement();//获得根节点Element title = (Element) configuration.getFirstChild();Element font = (Element) title.getFirstChild();NodeList children = font.getChildNodes();Node second = children.item(1);InfoUtil.info(second.getTextContent());Node third = children.item(2);InfoUtil.info(third.getTextContent());}private Document getDoc(File xmlFile) {Document doc = null;DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();factory.setValidating(true);factory.setIgnoringElementContentWhitespace(true);factory.setExpandEntityReferences(true);try {DocumentBuilder builder = factory.newDocumentBuilder();MyEntityResolver resolver = new MyEntityResolver();ErrorHandler handler = new MyErrorHandler();builder.setEntityResolver(resolver);//builder.setErrorHandler(handler);doc = (Document) builder.parse(xmlFile);} catch (ParserConfigurationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SAXException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return doc;}private void createFile(File xmlFile) {// TODO Auto-generated method stubtry {xmlFile.createNewFile();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package com.lmk.test.dom_xml;import java.io.IOException;import java.io.InputStream;import java.net.URL;import org.xml.sax.EntityResolver;import org.xml.sax.InputSource;import org.xml.sax.SAXException;public class MyEntityResolver implements EntityResolver {@Overridepublic InputSource resolveEntity(String publicId, String systemId)throws SAXException, IOException {if(systemId != null){InputStream in = this.getClass().getResourceAsStream("label.dat");InputSource source = new InputSource(in);}else{}return null;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}
这里是错误的!!!!!!!!!重新审视 EntityResolver 的作用
0 0
- android使用XML-----DOM--------进阶
- android使用XML-----DOM
- Android使用DOM解析xml
- android使用dom解析xml
- Android演示使用DOM解析xml文件
- Android使用DOM方式解析XML
- android下使用dom读写xml文件
- android下使用dom读写xml文件
- Android解析XML方式(三)使用DOM解析XML
- Android解析XML方式(三)使用DOM解析XML
- android xml dom解释
- Android--xml解析(Dom)
- Android--DOM解析XML
- Android DOM解析XML
- Android DOM解析XML
- android--------------xml Dom解析
- android DOM解析Xml
- Android DOM解析XML
- Binary Tree Maximum Path Sum,Unique Binary Search Trees I,II, Recover Binary Search Tree
- Hadoop Configuration配置类的分析
- [C++] Union共用体示例讲解
- ACM-BestCoder Round #20
- jQuery中ajax交互行为
- android使用XML-----DOM--------进阶
- 第14周 项目2-带姓名的成绩单(3)【按照姓名排序后的成绩单】
- 第八章 用户模式下的线程同步
- 2014.11.29
- SUBROUTINE BCS_FORCE
- CVE-2014-7911: Android <5.0 Privilege Escalation using ObjectInputStream (权限提升漏洞)
- VC的若干实用小技巧
- nginx实现反向代理
- 特详细的PHPMYADMIN简明安装教程