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);
}
}
}
}
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);
}
}
}
}
...全文
相关推荐
JAVA -XML解析总结
XML解析总结归纳 总结了java常用的xml解析常用
Java面试一些大问题
mvc的理解,一些概念;struts2的工作流程;Struts2框架中的处理
java http 发送xml报文
java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文java http 发送xml报文
java解释Xml,从数据库中读出来,解释Xml
java解释Xml 从数据库中读出来,解释Xml
dom4j基于事件流解析大XML的文件 示例
解决普通方法解析大xml的文件时,内存严重不足。


