首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java XML 求 格式化一份 XML 文件 高分给你哦

2012-02-07 
java XML高手请进 求 格式化一份 XML 文件高分给你哦要求用Java 格式化的结果 存放在 Map 中,最好 再把Map

java XML高手请进 求 格式化一份 XML 文件 高分给你哦
要求用Java 格式化的结果 存放在 Map 中,最好 再把Map 放在List中 其中 "r8"表示double数据类型, 

<?xml version="1.0" encoding="gb2312"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="b" fieldname="SERIALNO" fieldtype="string" required="true" WIDTH="20"/>
<FIELD attrname="c" fieldname="ACCTSERIALNO" fieldtype="string" WIDTH="100"/>
<FIELD attrname="d" fieldname="CARDTYPE" fieldtype="r8"/>
<FIELD attrname="e" fieldname="TXNSERIALNO" fieldtype="string" WIDTH="20"/>
<FIELD attrname="f" fieldname="BIZNO" fieldtype="string" WIDTH="20"/>
<FIELD attrname="g" fieldname="TRADENAME" fieldtype="string" WIDTH="40"/>
<FIELD attrname="h" fieldname="CUR" fieldtype="string" SUBTYPE="FixedChar" WIDTH="3"/>
<FIELD attrname="i" fieldname="AMT" fieldtype="r8"/>
<FIELD attrname="j" fieldname="OPERID" fieldtype="string" WIDTH="10"/>
<FIELD attrname="k" fieldname="PRINTDEGREE" fieldtype="r8"/>
<FIELD attrname="l" fieldname="CARDNO" fieldtype="r8"/>
<FIELD attrname="m" fieldname="CARDNAME" fieldtype="string" WIDTH="40"/>
<FIELD attrname="n" fieldname="ACCTDATE" fieldtype="dateTime"/>
<FIELD attrname="o" fieldname="ORGNO" fieldtype="string" WIDTH="20"/>
</FIELDS>
</METADATA>
<ROWDATA>
<ROW b="1111141321259821484" c="1111140000013070" d="2.0" e="1111140000013070" f="5566IRJX11000289" g="登记解付" h="USD" i="25496.68" j="96" k="0.0" l="21.0" m="通用记帐凭证" n="20111114T00:00:00000" o="1000000000" />
<ROW b="1111141321259851625" c="1111140000013069" d="2.0" e="1111140000013069" f="5566IRJX11000290" g="登记解付" h="USD" i="35431.6" j="96" k="0.0" l="21.0" m="通用记帐凭证" n="20111114T00:00:00000" o="1000000000" />
</ROWDATA>
</DATAPACKET>

[解决办法]
我把FIELD的值全部取出来了,ROW也是差不多的
我对怎么封装成map的需求不太清楚,lz自己做吧

Java code
import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;public class MyReaderXMLTest {    public static void main(String[] args) {           try {              SAXReader saxReader=new SAXReader();              Document doc=saxReader.read(new File("MyXml1.xml"));              List<Node> data=doc.selectNodes("/DATAPACKET/METADATA/FIELDS/FIELD");              for(Node node:data){                  if("Element".equals(node.getNodeTypeName())){                        Element element=(Element)node;                        System.out.print(element.attributeValue("attrname")+"\t");                        System.out.print(element.attributeValue("fieldname")+"\t");                        System.out.print(element.attributeValue("fieldtype")+"\t");                        System.out.print(element.attributeValue("required")+"\t");                        System.out.print(element.attributeValue("WIDTH")+"\t");                        System.out.println();                  }              }           } catch (Exception e) {               e.printStackTrace();           }        }} 


[解决办法]
这个很好弄的....你去好好看看dom4j就行了..都封装好了
[解决办法]
对xml操作的很多
dom4j,sax,dom,Jdom

[解决办法]
为什么不试试JiBX, 公认超快的将xml转换成java对象的方法.
[解决办法]
lz的意思是
field定义了row类的属性
把一个row用field的方式解析出来,放到一个map里面
再把多个map放到list里面

这样才意思很类也

[解决办法]
虽然不是很懂但是好像听过
xml好像可以和java对象互转
很方便的
[解决办法]

Java code
//假设xml文件中的内容  是dataDocument doc  =  DocumentHelper.parseText(data);//List<Node> 就是field的集合,然后循环,将每一个放到Map中List<Node> docs = doc.selectNodes("//DATAPACKET /METADATA/FIELDS");//同理得到row的集合List<Node> docs2 = doc.selectNodes("//DATAPACKET /ROWDATA"); 

热点排行