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: 自己发现问题, 下次再有类似的问题会立即跟踪到
一年多之前 回复
xd2010082031
xd2010082031 回复lbcab: 确实是字符串的问题,多了几个无用的节点
一年多之前 回复
xd2010082031
xd2010082031 我只是用这段字符串试验能不能通过上文的getRoot拿到根节点,我做移动前端接受的是服务端解析好的xml
一年多之前 回复
xd2010082031
xd2010082031 回复lbcab: 你看一下,我不知道为什么贴出来尖括号都没了
一年多之前 回复
lbcab
lbcab 回复xd2010082031: 那你把解析的字符串贴出来看看有没有问题
一年多之前 回复
xd2010082031
xd2010082031 之前我用这段代码解析过别的字符串当时成功了,但是现在又不行了,感觉跟传参没关系就是拿不到document这个对象
一年多之前 回复
xd2010082031
xd2010082031 我试了,还是报空指针,doc=null
一年多之前 回复
xd2010082031
xd2010082031 File file=new File("E:\\work_file\\activity_main.xml");
一年多之前 回复
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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!