如何用Java解析XML

KarlDoenitz 2012-08-03 01:05:58
诸位高手,我是初学XML的,有一个XML不会解析,请高手指教。
<?xml version="1.0" encoding="UTF-8"?>
<first name="总的" id="01" attribute="folder">
<first name="jim" id="02" attribute="folder">
<first name="nihao" id="03" attribute="doc"/>
<first name="ok" id="04" attribute="folder">
<first name="second" id="05" attribute="folder"/>
<first name="oh" id="06" attribute="ppt"/>
<first name="8" id="07" attribute="folder">
<first name="oh" id="08" attribute="ppt"/>
<first name="myGod" id="09" attribute="doc"/>
</first>
</first>
</first>
<first name="zhai" id="10" attr="folder">
<first name="你好" id="11" attribute="doc"/>
<first name="他好" id="12" attribute="ppt"/>
</first>
</first>
其中,attribute是属性,folder表示文件夹,doc和ppt表示文档类型,要求是输入一个String类型的字符串,如:总的/jim/
ok/8/oh.ppt 计算机能给我打印出01/02/04/07/08;01,02,03……为文件夹或文件对应的ID号。
我写了好几个程序,都有错,没一个正常运行的,我是初学,哪位高手有办法帮我解决?
...全文
222 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
KarlDoenitz 2012-08-04
  • 打赏
  • 举报
回复
好了,自己动手,丰衣足食,问题解决了,耗时1天。
-AJ- 2012-08-03
  • 打赏
  • 举报
回复
刚上大学,情有可原
NickCheng 2012-08-03
  • 打赏
  • 举报
回复
Angelababy_ 2012-08-03
  • 打赏
  • 举报
回复
这种问题抛给刚上大学的人去做,怕是没人可以完成的了。

Lz的学校应该蛮不错了。

即使工作2,3年的,这个问题他解决起来应该也不轻松。
KarlDoenitz 2012-08-03
  • 打赏
  • 举报
回复
我刚刚上大学,选的软件工程这个专业,看来我要好好学习了。
KarlDoenitz 2012-08-03
  • 打赏
  • 举报
回复
看来我要给你们解释一下了,上级给了一个这样XML文件,让我们小组的同学解读,我们同学都解读不出来,我们都跟他说XML文件有问题,他说任何问题都有方法解决,不准我们改xml文档。
Angelababy_ 2012-08-03
  • 打赏
  • 举报
回复
不好意思,以上代码楼主可以不用看了,鄙人技术有限,出现了纰漏:

System.out.println(node.getLength());

输出:12
证明元素节点名字一样的话,也是可以被解析的,它只是不符合dtd的规范。
我思考下这个问题如何解决,等下再贴代码。
Angelababy_ 2012-08-03
  • 打赏
  • 举报
回复
d:\first.xml

<?xml version="1.0" encoding="UTF-8"?>
<first name="总的" id="01" attribute="folder">
<first name="jim" id="02" attribute="folder">
<first name="nihao" id="03" attribute="doc"/>
<first name="ok" id="04" attribute="folder">
<first name="second" id="05" attribute="folder"/>
<first name="oh" id="06" attribute="ppt"/>
<first name="8" id="07" attribute="folder">
<first name="oh" id="08" attribute="ppt"/>
<first name="myGod" id="09" attribute="doc"/>
</first>
</first>
</first>
<first name="zhai" id="10" attr="folder">
<first name="你好" id="11" attribute="doc"/>
<first name="他好" id="12" attribute="ppt"/>
</first>
</first>

--------------------------------------------------------------------------

package com.sean.xmltest;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ParsersTest01 {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("d:"+File.separator+"first.xml"));
NodeList node = document.getElementsByTagName("first");
System.out.println(node.item(0));
System.out.println(node.item(1));
System.out.println(node.item(2));
System.out.println(node.item(3));
System.out.println(node.item(4));
}
}

输出:
[first: null]
[first: null]
[first: null]
[first: null]
[first: null]


原因:你的xml的元素名称,不符合xml的命名规范(xmlnamespace:xmlns)

-AJ- 2012-08-03
  • 打赏
  • 举报
回复

http://stax.codehaus.org/Home

http://www.devx.com/Java/Article/30298/1954

网上示例代码大把大把。。。

楼主要加强一下自学能力,不然的话,转行可能是唯一出路。
Angelababy_ 2012-08-03
  • 打赏
  • 举报
回复
你的xml文件,每个element的命名不符合规范的。
Angelababy_ 2012-08-03
  • 打赏
  • 举报
回复
java解析xml的有2个方法,一个是sax,一个是dom.

javax.xml.parsers包下有4个专门解析xml的类,你可以尝试着做一下。

做不出来再留言。
KarlDoenitz 2012-08-03
  • 打赏
  • 举报
回复
哪个高手能给个代码让我印象深刻一下。
-AJ- 2012-08-03
  • 打赏
  • 举报
回复
刚刚注意到,楼主有标明“初学”。
本来犹豫要不要给个示例代码,又一想,这让其实对楼主帮助不大。楼主自己去网上找一下,关于STaX (XML-Stream)的资料其实很多,自己试着做一下,印象深刻些。
-AJ- 2012-08-03
  • 打赏
  • 举报
回复
解析XML可以用 STaX (XML-Stream)

23,407

社区成员

发帖
与我相关
我的任务
社区描述
Java 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧