文档详情

XML生成和解析说明

无***
实名认证
店铺
DOC
167KB
约15页
文档ID:157935821
XML生成和解析说明_第1页
1/15

目前在很多工程中需要生成相关的XML文件和解析XML文件一、XML文件生成说明1、基本概念:XML叶子节点、树节点、父节点、层次结构叶子节点:主要是指说明的是这个节点中没有层次结构了,仅仅拥有节点属性和相关的节点数据树节点:主要是有树形分支结构父节点:主要是指树形结构中的某个层次的上一层的关系:例如:A/B/C C的父节点是B层次结构主要是说明XML树中对应的树型结构XML树型路径(从根节点算起包括数节点)XML文件 CRM@001.ctnbc-;20120706150135;38 CRM@001.ctnbc- CRM*0914# CRM-SERV.CB@001.ctnbc- 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} <2>形成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 Exception{List 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.xml}}XML实例文件 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 Exception{List 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());System.out.println(attr01.getValue());}}}//读取该节点下子节点的数据//读取SgwQueryReq/DATA/Service_Information/Data_Information/Data_Table_Simple_Row/SERV/SERV_PARAM 这个节点的数据int[] loc = xmlParse.getOneParentsElement(path, path01, i);if (loc.length >0) {System.out.println(path01 + " sta");for(int j=0;j0 ){XMLNodeCollection nodes = element01.getElementLeafNodeColl();Iterator iter01 = nodes.ListIterator();if (iter01 != null) {while(iter01.hasNext()){Entry entry = (Entry)iter01.next();//节点名称System.out.println(entry.xmlNode.getName());//节点数据System.out.println(entry.xmlNode.getValue());//节点属性列表 这个属性对应的对象是XMLAttribute attrName attrValue//entry.xmlNode.getAttributes();}}}//节点树形不为空if (element01.getAttributes() != null) {Iterator iter02 = element01.getAttributes().iterator();if (iter02 != null) {while(iter02.hasNext()){XMLAttribute attr01 = (XMLAttribute)iter02.next();System.out.println(attr01.getName());System.out.println(attr01.getValue());}}}}System.out.println(path01 + " end");System.out.println("");}}}}。

下载提示
相关文档
正为您匹配相似的精品文档