项目中要解析xml
我选择了Dom解析
先看代码在提问:
tt.xml
[code="java"]
08:00
AM
电影:追女仔
湖北省 | 湖北电视台 | 湖北影视频道
/diffgr:diffgram[/code]
java代码
[code="java"]DocumentBuilderFactory dbf=null;
dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
db=dbf.newDocumentBuilder();
Document d=null;
d=db.parse(new File("tt.xml"));
NodeList n=null;
n=d.getElementsByTagName("tvProgramTable");
Node node=null;
for(int i=0;i<n.getLength();i++){
node=n.item(0);//为什么是0啊,1不行
node=node.getChildNodes().item(1);//为什么要是1啊,0不行
System.out.println("value is"+node.getTextContent());
}[/code]
控制台: value is 08:00
还有下面的Java代码
[code="java"]DocumentBuilderFactory dbf=null;
dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
db=dbf.newDocumentBuilder();
Document d=null;
d=db.parse(new File("tt.xml"));
NodeList n=null;
n=d.getElementsByTagName("tvProgramTable");
Node node=null;
for(int i=0;i<n.getLength();i++){
node=n.item(0);
node=node.getFirstChild();
System.out.println("value is"+node.getTextContent());
}[/code]
上面的代码不能输出08:00
做测试如下
[code="java"]
DocumentBuilderFactory dbf=null;
dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=null;
db=dbf.newDocumentBuilder();
Document d=null;
d=db.parse(new File("tt.xml"));
NodeList n=null;
n=d.getElementsByTagName("tvProgramTable");
Node node=null;
for(int i=0;i<n.getLength();i++){
node=n.item(0);
NodeList nl=node.getChildNodes();
for(int k=0;k<nl.getLength();k++){
System.out.println((k+"*******************************************"));
System.out.println(k+"node name is"+nl.item(k).getNodeName());
if(nl.item(k).getNodeName().equals("#text") ){
System.out.println("values is "+((Text)nl.item(k)).getWholeText());
}else{
System.out.println("values is "+((Text)nl.item(k).getFirstChild()).getWholeText());
}
}
}
[/code]
控制台输出如下:
[code="java"]0*******************************************
0node name is#text
values is
1*******************************************
1node name isplayTime
values is 08:00
2*******************************************
2node name is#text
values is
3*******************************************
3node name ismeridiem
values is AM
4*******************************************
4node name is#text
values is
5*******************************************
5node name istvProgram
values is 电影:追女仔
6*******************************************
6node name is#text
values is
7*******************************************
7node name istvStationInfo
values is 湖北省 | 湖北电视台 | 湖北影视频道
8*******************************************
8node name is#text
values is [/code]
得到如下结论:
也就是每个节点的前面都加了 Text 它的值为空;
如果一个节点是最后的节点(不包括Text),要得到他的text ,可有用
Text t=(Text)node.getfirstchild();
valus is t.getDate();
希望来者指点指点
在这先谢谢了