如何用JAVA解析XML(50分)

  • 主题发起人 TAO_0909
  • 开始时间
T

TAO_0909

Unregistered / Unconfirmed
GUEST, unregistred user!
如有XML文件Test.xml内容是
<?xml version="1.0" encoding="gb2312"?>
<Book>
<Name>JAVA编程思想</Name>
<Price>22.2</Price>
</Book>
如何才能得到Name,Price的值。我知道JB中有JAXP及BolandXML等包可以解析XML文件,
但不知如何使用,请指教!
 
你需要的是一个Document对象。
Documentdo
c =do
cumentFactory.getInstance("filename");
然后就可以从doc的root开始一个个得到子节点了。
请参阅apache.org中Xerces的文档中的例子。
 
也可以xml pareser类
曹兄是用DOM方式
 
对呀,方法多啦,还可以用apache common里面的digest,直接把xml元素变成对象。
 
写一个简单的例子,对于您的这种情况
import java.util.Hashtable;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.*;
public class test {
public static void main(String[] args) {
Hashtable values = new Hashtable();
String fileName = "e:/test.xml";

DocumentBuilderFactory dbf =do
cumentBuilderFactory.newInstance();
dbf.setValidating(false);
dbf.setIgnoringComments(true);
DocumentBuilder db = null;

try {
db = dbf.newDocumentBuilder();
} catch (Exception e) {
e.printStackTrace();
}
Documentdo
c = null;
try {
doc = db.parse(new InputSource(new FileInputStream(fileName)));
} catch (Exception e) {
e.printStackTrace();
}

NodeList nl =do
c.getDocumentElement().getChildNodes();
for (int i=0 ;
i<nl.getLength() ;
i++) {
Node n = nl.item(i);
if (n.getLocalName()!=null)
if (n.getFirstChild() != null) values.put(n.getLocalName(), n.getFirstChild().getNodeValue());
else
values.put(n.getLocalName(), "");
}

System.out.println(values.get("Name"));
System.out.println(values.get("Price"));
}
}
 
鼓掌ing ...
 
学习了!
但是我在JCretor执行了一下上面的代码 ,却得到2个“ null ”值,何故?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=539768
 
to jrq
您太打击我了,我可是写了程序,照着写了那个xml,运行正确才敢贴的啊。
是不是您的xml和开头说的有差异?比如Name写成name之类的?
 
还有就是用JAXB,
把xml file 绑定到一个java对象上,接下来操纵这个xml就象是用普通的java对象一样。
 
多人接受答案了。
 
顶部