3
回答
关于xml文件的解析:什么原因会导致Document doc = builder.parse(in);不执行,也就是无法解析xml文件?
String urlStr = HttpUtil.BASE_URL + "servlet/UpdateServlet";
		System.out.println(urlStr);
		try {
			URL url = new URL(urlStr);
			URLConnection conn = url.openConnection();

			InputStream in = conn.getInputStream();
			System.out.println("in-->>"+in);

			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
			System.out.println("factory-->>"+factory);
			
			DocumentBuilder builder = factory.newDocumentBuilder();
			System.out.println("builder-->>"+builder);
			

			Document doc = builder.parse(in);
			System.out.println("doc-->>"+doc);
			NodeList nl = doc.getElementsByTagName("menu");
                      System.out.println("nl--->>"+nl);

我在程序中打印了一些值,但是,为什么只打印出了in , factory, builder,后边的doc,nl都没打印出来,是因为xml没解析成功吗?是什么原因导致的呢?
<无标签>
举报
skywxx
发帖于5年前 3回/2K+阅

以下是问题补充:

  • @skywxx :程序补充: } catch (Exception e) { e.printStackTrace(); } (5年前)
共有3个答案 最后回答: 5年前
这是用的哪个库啊? 不解析总该有异常把?
--- 共有 3 条评论 ---
红薯回复 @skywxx : 你在代码里有一些打印,有打印出来结果吗? 5年前 回复
skywxx没有报异常,只是我要把通过nodelist把数据存储到本地数据库,现在的结果是,本地数据库无数据 5年前 回复
skywxxorg.w3c.dom.* 5年前 回复

引用来自“红薯”的答案

这是用的哪个库啊? 不解析总该有异常把?
这是打印结果:只打印出这四条
08-13 15:27:12.352: I/System.out(13778): http://192.168.1.246:8080/Order_Server/servlet/UpdateServlet

08-13 15:27:12.622: I/System.out(13778): in-->>libcore.net.http.ChunkedInputStream@40fb2060

08-13 15:27:12.632: I/System.out(13778): factory-->>org.apache.harmony.xml.parsers.DocumentBuilderFactoryImpl@412c8310

08-13 15:27:12.632: I/System.out(13778): builder-->>org.apache.harmony.xml.parsers.DocumentBuilderImpl@40fb1898

--- 共有 2 条评论 ---
skywxx回复 @红薯 : 你看一下,doc 和 nl的值是没打印出来的,而且您看一下,我在下边的程序里,设置打印id和name ,但是也没有打印出来 5年前 回复
红薯打印出来就说明解析是正确的,你应该去看看 DOM 的 API 看怎么从中读取数据 5年前 回复

引用来自“红薯”的答案

这是用的哪个库啊? 不解析总该有异常把?
NodeList nl = doc.getElementsByTagName("menu");
System.out.println("nl--->>"+nl);

ContentResolver cr = getContentResolver();
Uri uri1 = Menus.CONTENT_URI;
System.out.println("uri1---->>"+uri1);
			
cr.delete(uri1, null, null);

// 循环将数据保存到数据表
for (int i = 0; i < nl.getLength(); i++) {

ContentValues values = new ContentValues();

int id = Integer.parseInt(doc.getElementsByTagName("id")
             .item(i).getFirstChild().getNodeValue());
System.out.print("id--->>"+id); 
				
String name = doc.getElementsByTagName("name").item(i)
		.getFirstChild().getNodeValue(); 
System.out.println("name---->>"+name); 

values.put("_id", id);
values.put("name", name);
cr.insert(uri1, values);
}

我是这样读数据的,您看一下对吗?
--- 共有 6 条评论 ---
skywxx回复 @红薯 : 您老帮忙研究一下啊! 5年前 回复
skywxx回复 @红薯 : 我显示从服务器端的数据库读取出来数据(在这用到解析xml文件),然后用通过nodelist循环,把数据存入本地数据库 5年前 回复
skywxx回复 @红薯 : 问题在数据没存储到数据库里,我寻找原因,找到解析这一块了 5年前 回复
红薯回复 @skywxx : 你到底是解析XML还是写入数据库啊,两者要分开,才能知道具体问题出在哪里 5年前 回复
skywxx回复 @红薯 : 应该是可以的,因为在网上找了一些例子,也都是这样用的,但是真不知道是什么原因导致数据无法存储到本地数据库 5年前 回复
顶部