XML生成和解析说明.doc_第1页
XML生成和解析说明.doc_第2页
XML生成和解析说明.doc_第3页
XML生成和解析说明.doc_第4页
XML生成和解析说明.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目前在很多工程中需要生成相关的XML文件和解析XML文件。一、XML文件生成说明1、基本概念:XML叶子节点、树节点、父节点、层次结构。叶子节点:主要是指说明的是这个节点中没有层次结构了,仅仅拥有节点属性和相关的节点数据。树节点:主要是有树形分支结构父节点:主要是指树形结构中的某个层次的上一层的关系:例如:A/B/C C的父节点是B层次结构主要是说明XML树中对应的树型结构。XML树型路径(从根节点算起包括数节点)XML文件 CRM001.;20120706150135;38 CRM001. CRM*0914# CRM-SERV.CB001. 123456 0 9907102600000029166 101000010 08528395597 851 852 1 20120801000000 20991231000000 5 12345600 20120801000000 20991231000000 下边这个图就是XML的树形结构:二、生成XML方式1按照XML的树型接口。形成相关的XML树型结构模版。模版的格式如下。 MID UID CUST_ID PRODUCT_ID ACC_NBR ACCT_ID PARM_ID PARM_VALUE 形成XML实例(XML字符串)用到的APImon.xml.imp.XMLBaseParse (XML生成器)mon.xml.imp.XMLBaseReader(XML解析器)mon.xml.template.engine.XmlTemplateContainer(XML模版引擎)mon.xml.template.engine.XmlTemplateEngine(XML模版引擎)生成XML需要引入下边的包三、生成XML实例XML实例模版 MID UID CUST_ID ACCT_ID PARM_ID XML生成程序/* Created on 2012-7-9* TODO To change the template for this generated file go to* Window - Preferences - Java - Code Style - Code Templates*/package xml.test;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import mon.util.ReadFile;import mon.xml.imp.XMLCommonParse;import mon.xml.template.engine.XmlTemplateContainer;/* author Administrator* TODO To change the template for this generated type comment go to* Window - Preferences - Java - Code Style - Code Templates*/public class textXMLParse public static void main(String args) try textXMLParse t = new textXMLParse();t.createXML(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();private void createXML() throws ExceptionList xmlLevelList = new ArrayList();/XML的树形层次结构xmlLevelList.add(0, root/SgwQueryReq);xmlLevelList.add(1, root/SgwQueryReq/DATA);xmlLevelList.add(2, root/SgwQueryReq/DATA/Service_Information);xmlLevelList.add(3, root/SgwQueryReq/DATA/Service_Information/Data_Information);xmlLevelList.add(4, root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row);xmlLevelList.add(5, root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV);xmlLevelList.add(6, root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/BASE);xmlLevelList.add(7, root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_ACCT);xmlLevelList.add(8, root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM);XMLCommonParse xmlParse = new XMLCommonParse();/设置XML层次结构xmlParse.setXMLLevelList(xmlLevelList);/XML生成引擎数据容器XmlTemplateContainer container = new XmlTemplateContainer();container.setXMLLevelList(xmlLevelList);/设置XML模版ReadFile fl = new ReadFile();String classDir = this.getClass().getResource(testxml.vm).getPath();/ System.out.println(fl.getFileContent(classDir);container.setXMLReader(classDir);Map dataMap = new HashMap();/设置层次节点root/SgwQueryReq这个叶子节点 这里中的第一个0参数表示上边树形结构中的位置。 第二个0参数表示这个层次结构在XML整个实例树形中父节点所在的位置/说明:父节点的位置是从0开始计算dataMap.put(MID, 00001);dataMap.put(UID, 00002);container.setXMLLevelData(dataMap, 0, 0);/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERVdataMap.clear();dataMap.put(SERV_ID, 100001);dataMap.put(SOURCE, 100002);container.setXMLLevelData(dataMap, 5, 0);/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/BASE/这个节点层次父节点是 SERV 这个SERV节点在整个XML实例中的位置现在是0dataMap.clear();dataMap.put(FLAG_BASE, 200001);dataMap.put(CUST_ID, 200002);container.setXMLLevelData(dataMap, 6, 0);/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_ACCT/这个节点层次父节点是 SERVdataMap.clear();dataMap.put(FLAG_SERV_ACCT, 300001);dataMap.put(ACCT_ID, 300002);container.setXMLLevelData(dataMap, 7, 0); /root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM/这个节点层次父节点是 SERV dataMap.clear();dataMap.put(FLAG_SERV_PARAM, 400001);dataMap.put(PARM_ID, 400002);container.setXMLLevelData(dataMap, 8, 0); /root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM/这个节点层次父节点是 SERV dataMap.clear();dataMap.put(FLAG_SERV_PARAM, 410001);dataMap.put(PARM_ID, 410002);container.setXMLLevelData(dataMap, 8, 0); /上述这两个root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM节点在/父节点SERV 下边有出现两次/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERVdataMap.clear();dataMap.put(SERV_ID, A100001);dataMap.put(SOURCE, A100002);container.setXMLLevelData(dataMap, 5, 0);/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/BASE/这个节点层次父节点是 SERV 这个SERV节点在整个XML实例中的位置现在是1dataMap.clear();dataMap.put(FLAG_BASE, A200001);dataMap.put(CUST_ID, A200002);container.setXMLLevelData(dataMap, 6, 1);/root/SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_ACCT/这个节点层次父节点是 SERV 这个SERV节点在整个XML实例中的位置现在是1dataMap.clear();dataMap.put(FLAG_SERV_ACCT, A300001);dataMap.put(ACCT_ID, A300002);container.setXMLLevelData(dataMap, 7, 1); xmlParse.createXMLLevelData(container);/XML字符串String sendXML = xmlParse.getSpecXMLFomtMatContent(root/SgwQueryReq, 0, UTF-8, false);System.out.println(sendXML);/生成的XML实例 textxml.xmlXML实例文件 00001 00002 200002 300002 400002 410002 A200002 A300002 XML实例文件解析概念说明主要是解析XML文件的内容,读取XML文件的叶子节点的数据和属性以及XML层次节点的属性的数据。基本概念:层次节点属性、叶子节点属性、叶子节点数据XML层次节点树形结构图: 这个是SERV层次节点的属性这个CUST_ID叶子节点中TEST是属性200002是叶子节点的数据。XML实例 00001 00002 200002 300002 400002 410002 A200002 A300002 XML解析程序/* Created on 2012-7-9* TODO To change the template for this generated file go to* Window - Preferences - Java - Code Style - Code Templates*/package xml.test;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import mon.util.ReadFile;import mon.xml.imp.XMLAttribute;import mon.xml.imp.XMLCommonReader;import mon.xml.imp.XMLElement;import mon.xml.imp.XMLNodeCollection;import mon.xml.imp.XMLNodeCollection.Entry;/* author Administrator* TODO To change the template for this generated type comment go to* Window - Preferences - Java - Code Style - Code Templates*/public class textXMLRead public static void main(String args) try textXMLRead t = new textXMLRead();t.readXML(); catch (Exception e) / TODO Auto-generated catch blocke.printStackTrace();private void readXML() throws ExceptionList xmlLevelList = new ArrayList();/XML的树形层次结构xmlLevelList.add(0, SgwQueryReq);xmlLevelList.add(1, SgwQueryReq/DATA);xmlLevelList.add(2, SgwQueryReq/DATA/Service_Information);xmlLevelList.add(3, SgwQueryReq/DATA/Service_Information/Data_Information);xmlLevelList.add(4, SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row);xmlLevelList.add(5, SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV);xmlLevelList.add(6, SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/BASE);xmlLevelList.add(7, SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_ACCT);xmlLevelList.add(8, SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM);XMLCommonReader xmlParse = new XMLCommonReader();/设置XML层次结构xmlParse.setXMLLevelList(xmlLevelList);/设置XML模版ReadFile fl = new ReadFile();String classDir = this.getClass().getResource(textReadxml.xml).getPath();/解析XML文件xmlParse.analysisXML(fl.getFileContent(classDir);/读取XML实例中SERV这个层次节点的个数String path = SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV;String path01= SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM;int cnt = xmlParse.xmlDomElementCount(SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV);for(int i=0;i0 )XMLNodeCollection nodes = element.getElementLeafNodeColl();Iterator iter01 = nodes.ListIterator();if (iter01 != null) while(iter01.hasNext()Entry entry = (Entry)iter01.next();/节点名称entry.xmlNode.getName();/节点数据entry.xmlNode.getValue();/节点属性列表 这个属性对应的对象是XMLAttribute attrName attrValueentry.xmlNode.getAttributes();/节点树形不为空if (element.getAttributes() != null) Iterator iter02 = element.getAttributes().iterator();if (iter02 != null) while(iter02.hasNext()XMLAttribute attr01 = (XMLAttribute)iter02.next();System.out.println(attr01.getName();S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论