java,XML解析!求高手指点!先谢谢了!

四维兜兜 2012-11-04 04:35:35
有如下一个txt文件:
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>四川省XX县XX镇XX路X段XX号</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>四川省XX市XX乡XX村XX组</ADDR>
</VALUE>
</RESULT>
将其标签,和内容取出,然后要说明标签的层次,(要求是用对象的思想,将每一个标设为一个对象(Element):其属性包括标签名字(title),其中所含的内容(contents)和他包含的子标签(用一个Vector<Element>表示)),求高手指点!!先谢谢了
...全文
175 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
四维兜兜 2012-11-05
  • 打赏
  • 举报
回复
嗯,谢谢楼上的朋友们,老师就是想让我们自己先写写,加强对解析器的理解,今晚的作业就是去查dom了!感谢高手们的指点
channel321 2012-11-05
  • 打赏
  • 举报
回复
既然是初学的话你老师的意思应该是让你封装数据吧。。 <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT> 看到最外层的标签是一个result,那么你就可以创建一个Result对象,里面包含什么呢?很明显,下一层标签就是value了,因为value还包含着子标签,这时候value里面的内容应该还是封装成一个对象Value噢,具体存储的值就是value子标签的取值 具体创建的类: Result类 包含private Vector<Value> Value类: 包含private String NO private String ADDR 按照楼主的情况大概想到就这样了。
long95wang 2012-11-05
  • 打赏
  • 举报
回复
如果是初学,5楼是正解 如果老师潜意识想让你们解析xml那么可以去阅读下dom4j。楼主不妨去我博客看看dom4j的文章,或许有点帮助喔,我资源中有log4j的学习帮助文档,jar和API
四维兜兜 2012-11-04
  • 打赏
  • 举报
回复
不太明白DTD,其实我的意思就是不用导jar包,我是初学java,老师让做的联系,本来我是从文本读出来,操作字符串,取出标签和内容,然后老师给了一个要求:要按对象那样来做,想了半天不知道怎么弄,主要是因为那个属性里面还有一个包含子标签的vector,不知道该怎么把读出来的字符串变成对象!...
木安 2012-11-04
  • 打赏
  • 举报
回复
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = dbf.newDocumentBuilder(); Document document = documentBuilder.parse(new File(filePath)); Element e = document.getDocumentElement(); NodeList nodeList = e.getElementsByTagName("NO"); nodeList.getLength(); System.out.println(nodeList.getLength()); for(int i = 0,j =nodeList.getLength();i<j;i++ ) { System.out.println(nodeList.item(i).getChildNodes().item(0).getNodeValue()); }
clarebaby504 2012-11-04
  • 打赏
  • 举报
回复
这个是XML和DTD的使用么? 如果我没理解错的话,这个可以分为两种,一种是外部引用还有一种是内部引用。我也不知道是不是你想要的那种。我先发一个你看下。 外部引用: 文件一A.xml: <?xml version="1.0" encoding="gb2312"?> <!DOCTYPE RESULT SYSTEM "A.dtd"> <RESULT> <VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR> </VALUE> <VALUE> <NO>B1234</NO> <ADDR>四川省XX市XX乡XX村XX组</ADDR> </VALUE> </RESULT> 个文件二A.dtd: <?xml version="1.0" encoding="gb2312"?> <!ELEMENT RESULT (VALUE)*> <!ELEMENT VALUE (NO,ADDR)> <!ELEMENT NO (#PCDATA)> <!ELEMENT ADDR (#PCDATA)> 另外还有一个验证文件 TestValidate.java import javax.xml.parsers.*; import org.xml.sax.helpers.*; import org.xml.sax.*; import java.io.*; import org.w3c.dom.*; import java.util.Scanner; public class TestValidate{ public static void main(String args[]){ String fileName=null; try { Scanner reader=new Scanner(System.in); System.out.print("请输入要验证有效性的XML文件的名字:"); fileName=reader.nextLine(); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); factory.setValidating(true); DocumentBuilder builder= factory. newDocumentBuilder(); MyHandler handler=new MyHandler(); builder.setErrorHandler(handler); Document document=builder.parse(new File(fileName)) ; if(handler.errorMessage==null) System.out.println(fileName+"文件是有效的"); else System.out.println(fileName+"文件不是有效的"); } catch(Exception e){ System.out.println(e); } } } class MyHandler extends DefaultHandler{ String errorMessage=null; public void error(SAXParseException e) throws SAXException{ errorMessage=e.getMessage(); System.out.println("一般错误:"+errorMessage); } public void fatalError(SAXParseException e) throws SAXException{ errorMessage=e.getMessage(); System.out.println("致命错误:"+errorMessage); } } 这个需要在MyEclipse中运行TestValidate.java。验证文件的有效性。
Inhibitory 2012-11-04
  • 打赏
  • 举报
回复
看看Dom4J,一个小时之内肯定能学会

62,612

社区成员

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

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