java解释XML遇到大问题

taowenbo2008 2009-01-03 11:43:40
大家好,我用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);
}
}
}
}
...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
caok 2009-01-04
  • 打赏
  • 举报
回复
顶一下
taowenbo2008 2009-01-03
  • 打赏
  • 举报
回复
问题已经解决了。用jdom之后就可以了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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