java解释XML遇到大问题
大家好,我用java解释xml文件,遇到了问题,就是当我用下面这个代码得到值时:
nodeName = curChild.getNodeName();
nodeValue = curChild.getNodeValue();
nodeName得不到node的name,得到的都是“#text”这个值。nodevalue是正确的。望大虾们帮帮忙,急得很。在线等。
我的xml文件如下:
<NewDataSet>
<Status Result="ok" />
<c_xyorder>
<LIST_ID>17703552</LIST_ID>
<ORDER_ID>101312967</ORDER_ID>
<SMEM_ID>12530401</SMEM_ID>
<SNAME>红塔烟草(集团)有限责任公司</SNAME>
<BMEM_ID>11440901</BMEM_ID>
<BNAME>广东烟草茂名市有限责任公司</BNAME>
<ORDER_DATE>2008-12-13T16:57:02.0000000+08:00</ORDER_DATE>
<DELI_DATE>2009年上半年</DELI_DATE>
<DELI_DATE_S>2009-01-01T00:00:00.0000000+08:00</DELI_DATE_S>
<DELI_DATE_E>2009-06-30T00:00:00.0000000+08:00</DELI_DATE_E>
<SBEHALF>王家寿</SBEHALF>
<BBEHALF>柯文华</BBEHALF>
<MBEHALF>张扬</MBEHALF>
<TCOMMENT />
<KIND>工商</KIND>
<PKIND>省际</PKIND>
<HASRIGHT>1</HASRIGHT>
<CHARG_DATE>2008-12-15T08:37:02.0000000+08:00</CHARG_DATE>
<DEL_DATE>2008-12-17T15:04:20.0000000+08:00</DEL_DATE>
<QTOTAL>9650.0000</QTOTAL>
<SNODE>云南省</SNODE>
<BNODE>广东省</BNODE>
<SUBKIND>购销</SUBKIND>
</c_xyorder>
<c_xyorder>
<LIST_ID>17703588</LIST_ID>
<ORDER_ID>101312962</ORDER_ID>
<SMEM_ID>12530401</SMEM_ID>
<SNAME>红塔烟草(集团)有限责任公司</SNAME>
<BMEM_ID>11441701</BMEM_ID>
<BNAME>广东烟草阳江市有限责任公司</BNAME>
<ORDER_DATE>2008-12-13T16:50:08.0000000+08:00</ORDER_DATE>
<DELI_DATE>2009年上半年</DELI_DATE>
<DELI_DATE_S>2009-01-01T00:00:00.0000000+08:00</DELI_DATE_S>
<DELI_DATE_E>2009-06-30T00:00:00.0000000+08:00</DELI_DATE_E>
<SBEHALF>王家寿</SBEHALF>
<BBEHALF>冯文杰</BBEHALF>
<MBEHALF>张扬</MBEHALF>
<TCOMMENT />
<KIND>工商</KIND>
<PKIND>省际</PKIND>
<HASRIGHT>1</HASRIGHT>
<CHARG_DATE>2008-12-15T08:38:02.0000000+08:00</CHARG_DATE>
<DEL_DATE>2008-12-17T11:58:39.0000000+08:00</DEL_DATE>
<QTOTAL>5550.0000</QTOTAL>
<SNODE>云南省</SNODE>
<BNODE>广东省</BNODE>
<SUBKIND>购销</SUBKIND>
</c_xyorder>
<c_xyordpr>
<LIST_ID>17735009</LIST_ID>
<ORDER_ID>101314752</ORDER_ID>
<ID>1</ID>
<PRODUCT_ID>69010280486131253040100</PRODUCT_ID>
<QUANTITY>2250.0000</QUANTITY>
<PRICE>1244.8700</PRICE>
<PLATE>红梅(软黄)</PLATE>
<SUPPLIER_ID>12530401</SUPPLIER_ID>
<SUPPLIER>红塔烟草(集团)有限责任公司</SUPPLIER>
<REGION>云南省</REGION>
<TYPE>烤烟型</TYPE>
<TLEN>84.0</TLEN>
<PACKAGE_>全软</PACKAGE_>
<CLASS>四类</CLASS>
<MPLATE>红梅</MPLATE>
<IS_FAMOUS>1</IS_FAMOUS>
</c_xyordpr>
</NewDataSet>
java代码如下:
/*
* Created on 2009-1-3
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package com.hongta.com.z_delivery_bdc;
/**
* @author Administrator
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
import java.io.FileInputStream;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class TestXml {
/*
* Created on 2004-6-2
*
*java读取XML文档
*利用DoM来读取一个XML文档的内容,并将其打印出来
*
*/
public static void main(String[] args) {
Document doc;
DocumentBuilderFactory factory;
DocumentBuilder docBuilder;
Element root;
String elementName;
FileInputStream in;
String fileName;
try{
//get the xml file
// fileName = System.getProperty("user.dir");
fileName = "C:\\Documents and Settings\\Administrator.3939200975DB4C5\\桌面\\cigaXY2008-12-16.xml";
in = new FileInputStream(fileName);
//解析XML文件,生成document对象
factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
docBuilder = factory.newDocumentBuilder();
doc = docBuilder.parse(in);
//解析成功
System.out.println("parse successfull");
//获取XML文档的根节点
root = doc.getDocumentElement();
elementName = root.getNodeName();
//打印根节点的属性
printAttributes(root);
//打印该文档全部节点
System.out.println("打印全部节点");
printElement(root,0);
}
catch(Exception exp){
exp.printStackTrace();
}
}
//打印某个节点的全部属性
public static void printAttributes(Element elem){
NamedNodeMap attributes;
int i,max;
String name,value;
Node curNode;
attributes = elem.getAttributes();
max = attributes.getLength();
for(i=0;i<max;i++){
curNode = attributes.item(i);
name = curNode.getNodeName();
value = curNode.getNodeValue();
System.out.println("\t"+name+" = "+value);
}
}
//打印所有的节点的名称和值
//改方法采用递归方式打印文档的全部节点
public static void printElement(Element elem,int depth){
String elementName;
NodeList children;
int i,max;
Node curChild;
Element curElement;
String nodeName,nodeValue;
//elementName = elem.getNodeName();
//获取输入节点的全部子节点
children = elem.getChildNodes();
//按一定格式打印输入节点
for(int j=0;j<depth;j++){
System.out.print(" ");
}
printAttributes(elem);
//采用递归方式打印全部子节点
max = children.getLength();
for(i=0;i<max;i++){
curChild = children.item(i);
//递归退出条件
if(curChild instanceof Element){
curElement = (Element)curChild;
printElement(curElement,depth+1);
}
else{
nodeName = curChild.getNodeName();
nodeValue = curChild.getNodeValue();
for(int j=0;j<depth;j++)System.out.print(" ");
System.out.println(nodeName+" = "+nodeValue);
}
}
}
}