当前位置: 技术问答>java相关
关于JAVA XML的问题,请高手指教,在线等待!
来源: 互联网 发布时间:2017-04-17
本文导语: 我刚学习XML不久,现在在利用JAVA来显示XML的内容时不能显示出其节点的值来,请高手指教,我怎么样才能在JSP中取得XML的节点的值来。 我的程序如下:(你可以不拘泥如我的程序,只要有指教就行,多谢了) ...
我刚学习XML不久,现在在利用JAVA来显示XML的内容时不能显示出其节点的值来,请高手指教,我怎么样才能在JSP中取得XML的节点的值来。
我的程序如下:(你可以不拘泥如我的程序,只要有指教就行,多谢了)
得到的结果如下:
0 #text's value is
1 name's value is null
2 #text's value is
3 address's value is null
4 #text's value is
5 city's value is null
6 #text's value is
7 state's value is null
8 #text's value is
9 zip's value is null
10 #text's value is
11 phone's value is null
12 #text's value is
13 email's value is null
14 #text's value is
15 web's value is null
16 #text's value is
17 company's value is null
18 #text's value is
得到的结果中节点名可以取出,但值都为空,不知是什么原因,不知这样取值是不是合理,怎么样取最好呢?还有结果中#text是什么东西,怎么样来的,文件中没有这人内容呀?
我的程序如下:(你可以不拘泥如我的程序,只要有指教就行,多谢了)
得到的结果如下:
0 #text's value is
1 name's value is null
2 #text's value is
3 address's value is null
4 #text's value is
5 city's value is null
6 #text's value is
7 state's value is null
8 #text's value is
9 zip's value is null
10 #text's value is
11 phone's value is null
12 #text's value is
13 email's value is null
14 #text's value is
15 web's value is null
16 #text's value is
17 company's value is null
18 #text's value is
得到的结果中节点名可以取出,但值都为空,不知是什么原因,不知这样取值是不是合理,怎么样取最好呢?还有结果中#text是什么东西,怎么样来的,文件中没有这人内容呀?
|
import java.util.*;
import java.io.File;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
public class TestXML{
public static void main (String[] args){
String path = "";
try{
// path = tools.getUAprofPath(filename);
//filename = path + filename ;
path = "E:\technology\test\a.xml";
PrintXML printXML = new PrintXML();
printXML.getRoot(path);
}catch (Exception e) {
e.printStackTrace();
}
}
}
class PrintXML{
public void getRoot(String path){
try{
DOMBuilder builder = new DOMBuilder();
Document doc = builder.build(new File(path));
Element root = doc.getRootElement();
getEle(root);
}catch (JDOMException e) {
e.printStackTrace();
}
}
public void getEle(Element e){
try{
for (Iterator i=e.getChildren().iterator(); i.hasNext(); ) {
Element child = (Element)i.next();
System.out.println(child.getName()+":"+child.getText());
getEle(child);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
你要先去下载一个jdom的编译器,网上有很多地方可以下载。
这个里面没有使用DTD,你可以把xml里面的DTD文件说明去了,然后把path设置成你xml所在的位置,然后运行这个程序。
import java.io.File;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
public class TestXML{
public static void main (String[] args){
String path = "";
try{
// path = tools.getUAprofPath(filename);
//filename = path + filename ;
path = "E:\technology\test\a.xml";
PrintXML printXML = new PrintXML();
printXML.getRoot(path);
}catch (Exception e) {
e.printStackTrace();
}
}
}
class PrintXML{
public void getRoot(String path){
try{
DOMBuilder builder = new DOMBuilder();
Document doc = builder.build(new File(path));
Element root = doc.getRootElement();
getEle(root);
}catch (JDOMException e) {
e.printStackTrace();
}
}
public void getEle(Element e){
try{
for (Iterator i=e.getChildren().iterator(); i.hasNext(); ) {
Element child = (Element)i.next();
System.out.println(child.getName()+":"+child.getText());
getEle(child);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
你要先去下载一个jdom的编译器,网上有很多地方可以下载。
这个里面没有使用DTD,你可以把xml里面的DTD文件说明去了,然后把path设置成你xml所在的位置,然后运行这个程序。
|
--------------因為和之間有空格或控制符,所以當成一個text結點。。。:才會出現#text's value is
解決辦法:繼續使用getElementsByTagName();
Node node=document.getElementsByTagName("contact").item(0);
//其中contact 是根addressbook的子节点
Element elContact = (Element)node;
String name = elContact.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String address = .....
其余均如此操作。