2 xd2010082031 xd2010082031 于 2016.05.11 09:32 提问

android dom解析xml出现Document对象等于null的情况

源码如下:
public class XmlResolver
{
//****** 全局静态函数 ******
private static DocumentBuilder builder = null;
//-------------------------------------------------------------------------------
public static void Initialize()
{
try{
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
}catch (ParserConfigurationException e) {e.printStackTrace();Log.d("Fox", "ParserConfigurationException");}
}
//-------------------------------------------------------------------------------
//****** 实例化的定义 ******
private Document doc = null;
//-------------------------------------------------------------------------------
public XmlResolver(String XmlStr)
{//构造函数,读入XML文档
try{//将XML字符串推入doc
doc = builder.parse(new InputSource(new StringReader(XmlStr)));
}catch (Exception e) {return ;}
}
//-------------------------------------------------------------------------------
public XmlNode getRoot()
{//定位到第一个有效的节点(root)
Node Root = null;
try{
Root = doc.getFirstChild();
while(Root.getNodeType()!=1)
Root = Root.getNextSibling();
}catch (Exception e) {return null;}
return new XmlNode(Root);
}
//-------------------------------------------------------------------------------
}

我在该类的构造方法里传入一个xmlString字符串,然后调用doc.getRoot()报空指针,debug一看doc=null,但是builder和xmlString都拿到了呀?

求各位大神赐教

2个回答

lbcab
lbcab   2016.05.11 09:59
已采纳

你讲xml 文件传入解析试一下 doc = builder.parse(file); 看看是否还为空,
你还可以在 catch 中 加上 e.getCause().printStackTrace(); 看看错误信息是什么

lbcab
lbcab 回复xd2010082031: 自己发现问题, 下次再有类似的问题会立即跟踪到
大约 2 年之前 回复
xd2010082031
xd2010082031 回复lbcab: 确实是字符串的问题,多了几个无用的节点
大约 2 年之前 回复
xd2010082031
xd2010082031 我只是用这段字符串试验能不能通过上文的getRoot拿到根节点,我做移动前端接受的是服务端解析好的xml
大约 2 年之前 回复
xd2010082031
xd2010082031 回复lbcab: 你看一下,我不知道为什么贴出来尖括号都没了
大约 2 年之前 回复
lbcab
lbcab 回复xd2010082031: 那你把解析的字符串贴出来看看有没有问题
大约 2 年之前 回复
xd2010082031
xd2010082031 之前我用这段代码解析过别的字符串当时成功了,但是现在又不行了,感觉跟传参没关系就是拿不到document这个对象
大约 2 年之前 回复
xd2010082031
xd2010082031 我试了,还是报空指针,doc=null
大约 2 年之前 回复
xd2010082031
xd2010082031 File file=new File("E:\\work_file\\activity_main.xml");
大约 2 年之前 回复
xd2010082031
xd2010082031   2016.05.11 15:18

"<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
""+
"41895"+
"14"+
"张玉英"+
"1"+
"2"+
"1945-06-05 00:00:00.000"+
"440321450605302"+
"1408"+
"深圳市宝安区石岩镇科教卫办公室"+
"13600192600"+
"廖文钊"+
"石岩街道河滨北路10号"+
"27612715"+
"201"+
"201"+
"NK08"+
"2008-11-13 00:00:00.000"+
"2009-05-20 11:00:16.000"+
"1020"+
"2"+
"2"+
"1279"+
"1397"+
"1397"+
""+
""+
"1384"+
"40000"+
"41729.28"+
"1"+
"1"+
"1"+
"1"+
"10"+
"10"+
"10"+
"10"+
""+
""+
"1"+
"1"+
"1"+
"1"+
"10"+
"10"+
"10"+
"10"+
"tm"+
"sf"+
"df"+
"dt"+
"";

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Android 通过DOM解析并修改xml文件
Android 通过DOM解析并修改xml文件 private void modifyXml(String path) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDo
使用DOM方法实现xml文档内容的解析与写入
java中对xml文档的解析可以分为四种方式:DOM、JDOM、SAX、DOM4J这里研究一下使用DOM方式进行xml文档的写入和解析的方法。DOM解析XML文档时会遍历整个XML文档,在内存中建立一个树的数据结构。与JavaScript中DOM方法类似,我们可以通过getElementsByTagName方法获取到特定的标签对象,当然,同样的标签很多的话要使用List来存储返回的多个标签对象。另...
DOMDocument方法解析xml节点
可用php解析,也可用js解析 $dom = new DOMDocument(); $dom->loadXML($xmlstring); $rootNode = $dom->documentElement; node属性 nodeType:显示节点的类型 nodeName:显示节点的名称 nodeValue:显示节点的值 attributes:获取一个属性节点 fir
Java解析XML文件方法之一(DOM)
DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。通过DOM接口,应用程序可以在任何时候访问XML文档中的任何一部分数据,因此,这种利用DOM接口的机制也被称作随机访问机制。 DOM接口提
dom解析xml之中文乱码问题
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse(fileName); 在建立xml文档时,一般保存时默认以ansi码保存,再以utf-8读取,若有中文再会出
用dom解析如下xml文件内容
用dom解析如下xml文件内容 成都春熙路 成都盐市口 成都布鲁明顿 解析之后把所有年龄大于18的人的信息存储在List对象中, User类:有三个成员变量(String name,int age String addr) 并遍历输出list里所有人的名字。 dom解析的步骤     1)得到dom解析器DocumentBui
XML——DOM解析案例
本文介绍了DOM解析XML的一个小案例
org.w3c.dom document 和xml 字符串 互转
package com.mymhotel.opera; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import java.io.StringWriter; import java.util.Properties
【Java】Dom解析XML(读取,增删改查,保存),Dom树转Map集合,Map集合结构化层次输出——三个示例的整合
效果图 XML文件片段 (永恒之塔服务端:\gameserver\data\static_data\item_sets\item_sets.xml)589KB
Android-利用Document来对xml进行读取和写入操作-刘宇
首先先来介绍一下什么xml。xml是可扩展标记语言,他可以用来标记数据,定义数据类型。是一种允许用户对自己标记语言进行定义的源语言。解析XML文件的方法有很多方法:dom解析,就是document以及PULL和SAX方法