android学习之DocumentBuilderFact…

这篇博客介绍了如何在Android中使用DocumentBuilderFactory创建DOM解析器,并通过DOM解析XML文件。主要内容包括获取DocumentBuilderFactory实例,创建DocumentBuilder,解析XML输入流,以及相关的方法设置和属性检查。
摘要由CSDN通过智能技术生成

首先得到:得到 DOM 解析器的工厂实例      DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

然后DOM 工厂获得 DOM 解析器

 DocumentBuilder dombuilder=domfac.newDocumentBuilder();

(3 )把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它

InputStream is= new  FileInputStream("test1.xml");        

4 )解析 XML 文档的输入流,得到一个 Document

 Document doc=dombuilder.parse(is);

5 )得到 XML 文档的根节点

Element root=doc.getDocumentElement();

6 )得到节点的子节点 

NodeList books=root.getChildNodes();

 

newInstance

public static DocumentBuilderFactory newInstance()
获取 DocumentBuilderFactory 的新实例。此 static 方法创建一个新的工厂实例。此方法使用以下查找过程顺序来确定要加载的 DocumentBuilderFactory 实现类:
  • 使用 javax.xml.parsers.DocumentBuilderFactory 系统属性。
  • 使用 JRE 文件夹中的属性文件 "lib/jaxp.properties"。此配置文件格式为标准的 java.util.Properties 且包含实现类的完全限定名,其中实现类的键是上述定义的系统属性。 JAXP 实现只读取一次 jaxp.properties 文件,然后缓存其值供以后使用。如果首次尝试读取文件时,文件不存在,则不会再次尝试检查该文件是否存在。首次读取 jaxp.properties 后,其中的属性值不能再更改。
  • 如果可以,使用 Services API(在 JAR 规范中进行了详细描述)来确定类名称。Services API 将查找在运行时可用的 jar 中 META-INF/services/javax.xml.parsers.DocumentBuilderFactory 文件中的类名。
  • 平台默认的 DocumentBuilderFactory 实例。
在应用程序获取对 DocumentBuilderFactory 的引用后,它可以使用工厂来配置和获取解析器实例。

疑难解答提示

设置 jaxp.debug 系统属性将导致此方法将许多调试消息打印到 System.err,以说明其执行的操作以及在何处查找。

如果加载 DocumentBuilder 有问题,请尝试:

 java -Djaxp.debug=1 YourProgram ....
 
返回:
新的 DocumentBuilderFactory 实例
抛出:
FactoryConfigurationError - 如果该实现不可用,或者无法实例化。

newInstance

public static DocumentBuilderFactory newInstance(String factoryClassName,
                                                 ClassLoader classLoader)

从类名称中获取新的 DocumentBuilderFactory 实例。此函数在类路径中有多个提供者时很有用。它可以对应用程序提供更多的控制,因为它可以指定应该加载哪个提供者。

在应用程序获取对 DocumentBuilderFactory 的引用后,它可以使用工厂来配置和获取解析器实例。

疑难解答提示

设置 jaxp.debug 系统属性将导致此方法将许多调试消息打印到 System.err,这些消息说明了正在执行的操作以及何处可以找到它。

如有问题,可尝试使用以下代码:

 java -Djaxp.debug=1 YourProgram ....
 
参数:
factoryClassName - 提供 javax.xml.parsers.DocumentBuilderFactory 的实现的完全限定工厂类名称。
classLoader - 用来加载工厂类的 ClassLoader。如果该参数为 null,则使用当前 Thread 的上下文类加载器来加载工厂类。
返回:
新的 DocumentBuilderFactory 实例
抛出:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值