使用SAX解析XML文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <Code>
 3     <SytmBankCode code="1256" name="长虹基金" logonId="6228400210568" password="123456" fieldXmlFile="changhong//browser//TestField1256B.xml">
 4         <success-case caseNo="ChangHong010on2ANC_01" runFlg="true" channelKbn="B">
 5             <action gamenID="ABC01MN000B" actionType="button" actionPath="ABC01MN000B" actionId="otoMsgeTitlInfo0" inputField="false"/>
 6             <action gamenID="ABC01MN000B" actionType="button" actionPath="ABC01MN000B" actionId="gropButn" inputField="false"/>
 7         </success-case>
 8         <success-case caseNo="ChangHong010on2ANC_02" runFlg="true" channelKbn="B">
 9             <action gamenID="ABC01MN000B" actionType="xpath" actionPath="ABC01MN000B" actionId="(//input[@type=‘image‘])[3]" inputField="false"/>
10             <action gamenID="ABC01MN000B" actionType="dialogButton" actionPath="ABC01MN000B" actionId="butn02" dialog="您确认要中止交易并返回主界面吗?" inputField="false"/>
11             <action gamenID="ABC01MN000B" actionType="xpath" actionPath="ABC01MN000B" actionId="(//a[contains(text(),‘返回主界面‘)])[2]" inputField="false"/>
12             <action gamenID="ABC01MN000B" actionType="xpath" actionPath="ABC01MN000B" actionId="//body[@id=‘ABC01MN000B‘]/form/div[2]/div[6]/div[2]/div[8]/ul/li/a/img" inputField="false"/>
13         </success-case>
14     </SytmBankCode>
15 </Code>

TestXML.xml

Bean文件

 1 package bean;
 2
 3 import jp.co.hitachi_solutions.common.bean.TestBaseBean;
 4
 5 public class TestCodeActionBean extends TestBaseBean {
 6     private String gamenID = null;
 7     private String name = null;
 8     private String actionType = null;
 9     private String actionId = null;
10     private String waitItem = null;
11     private String dialog = null;
12     private String actionPath = null;
13     private Boolean inputField = null;
14     private Boolean screenShot = null;
15     private int tuban = 1;
16
17     public int getTuban() {
18         return tuban;
19     }
20     public void setTuban(int tuban) {
21         this.tuban = tuban;
22     }
23     public String getGamenID() {
24         return gamenID;
25     }
26     public void setGamenID(String gamenID) {
27         this.gamenID = gamenID;
28     }
29     public String getActionType() {
30         return actionType;
31     }
32     public void setActionType(String actionType) {
33         this.actionType = actionType;
34     }
35     public String getActionId() {
36         return actionId;
37     }
38     public void setActionId(String actionId) {
39         this.actionId = actionId;
40     }
41     public String getDialog() {
42         return dialog;
43     }
44     public void setDialog(String dialog) {
45         this.dialog = dialog;
46     }
47     public String getActionPath() {
48         return actionPath;
49     }
50     public void setActionPath(String actionPath) {
51         this.actionPath = actionPath;
52     }
53     public String getName() {
54         return name;
55     }
56     public void setName(String name) {
57         this.name = name;
58     }
59     public Boolean getInputField() {
60         return inputField;
61     }
62     public void setInputField(Boolean inputField) {
63         this.inputField = inputField;
64     }
65     public Boolean getScreenShot() {
66         return screenShot;
67     }
68     public void setScreenShot(Boolean screenShot) {
69         this.screenShot = screenShot;
70     }
71     public String getWaitItem() {
72         return waitItem;
73     }
74     public void setWaitItem(String waitItem) {
75         this.waitItem = waitItem;
76     }
77 }

TestCodeActionBean.java

 1 package bean;
 2
 3 import java.util.List;
 4 import jp.co.hitachi_solutions.common.bean.TestBaseBean;
 5
 6 public class TestCodeSuccessCaseBean extends TestBaseBean {
 7     private Boolean runFlg = null;
 8     private String channelKbn = null;
 9     private String homePageURL = null;
10     private List<TestCodeActionBean> actionConfig = null;
11     public Boolean getRunFlg() {
12         return runFlg;
13     }
14     public void setRunFlg(Boolean runFlg) {
15         this.runFlg = runFlg;
16     }
17     public String getChannelKbn() {
18         return channelKbn;
19     }
20     public void setChannelKbn(String channelKbn) {
21         this.channelKbn = channelKbn;
22     }
23     public String getHomePageURL() {
24         return homePageURL;
25     }
26     public void setHomePageURL(String homePageURL) {
27         this.homePageURL = homePageURL;
28     }
29     public List<TestCodeActionBean> getActionConfig() {
30         return actionConfig;
31     }
32     public void setActionConfig(List<TestCodeActionBean> actionConfig) {
33         this.actionConfig = actionConfig;
34     }
35 }

TestCodeSuccessCaseBean.java

 1 package bean;
 2
 3 import java.util.List;
 4
 5 import jp.co.hitachi_solutions.common.bean.TestBaseBean;
 6
 7 public class TestCodeSytmBankBean extends TestBaseBean {
 8     private String bankCode = null;
 9     private String bankName = null;
10     private String logonId = null;
11     private String password = null;
12     private List<TestCodeSuccessCaseBean> testCaseListBean = null;
13
14     public String getBankCode() {
15         return bankCode;
16     }
17     public void setBankCode(String bankCode) {
18         this.bankCode = bankCode;
19     }
20     public String getBankName() {
21         return bankName;
22     }
23     public void setBankName(String bankName) {
24         this.bankName = bankName;
25     }
26     public String getLogonId() {
27         return logonId;
28     }
29     public void setLogonId(String logonId) {
30         this.logonId = logonId;
31     }
32     public String getPassword() {
33         return password;
34     }
35     public void setPassword(String password) {
36         this.password = password;
37     }
38     public List<TestCodeSuccessCaseBean> getTestCaseListBean() {
39         return testCaseListBean;
40     }
41     public void setTestCaseListBean(List<TestCodeSuccessCaseBean> testCaseListBean) {
42         this.testCaseListBean = testCaseListBean;
43     }
44 }

TestCodeSytmBankBean.java

解析代码:

  1 package xml;
  2
  3 import java.io.IOException;
  4 import java.util.ArrayList;
  5 import java.util.List;
  6
  7 import javax.xml.parsers.ParserConfigurationException;
  8 import javax.xml.parsers.SAXParser;
  9 import javax.xml.parsers.SAXParserFactory;
 10
 11 import org.xml.sax.Attributes;
 12 import org.xml.sax.InputSource;
 13 import org.xml.sax.SAXException;
 14 import org.xml.sax.XMLReader;
 15 import org.xml.sax.helpers.DefaultHandler;
 16
 17 import bean.TestCodeActionBean;
 18 import bean.TestCodeSuccessCaseBean;
 19 import bean.TestCodeSytmBankBean;
 20
 21 public class SAXParserXML extends DefaultHandler {
 22
 23     private TestCodeSytmBankBean sytmBankBean = null;
 24
 25     private TestCodeSuccessCaseBean caseBean = null;
 26
 27     private List<TestCodeSuccessCaseBean> caseList = null;
 28
 29     private List<TestCodeActionBean> actionConfig = null;
 30
 31     private String fieldXmlFile = null;
 32
 33     public SAXParserXML(String xmlFile) {
 34         readFieldValue(xmlFile);
 35     }
 36
 37     /*
 38      * 重写父类的startElement()方法
 39      * 接收元素开始的通知,默认情况下,不执行任何操作。
 40      * uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。
 41      * localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。
 42      * qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。
 43      * attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。
 44      */
 45     public void startElement(String namespaceURI, String localName,
 46             String qName, Attributes attrs) throws SAXException {
 47         if ("SytmBankCode".equals(qName)) {
 48             String sytmBankCode = attrs.getValue("code");
 49             fieldXmlFile = attrs.getValue("fieldXmlFile");
 50
 51             if (sytmBankCode != null) {
 52                 sytmBankBean = new TestCodeSytmBankBean();
 53
 54                 sytmBankBean.setBankCode(sytmBankCode);
 55                 sytmBankBean.setBankName(attrs.getValue("name"));
 56                 sytmBankBean.setLogonId(attrs.getValue("logonId"));
 57                 sytmBankBean.setPassword(attrs.getValue("password"));
 58
 59                 caseList = new ArrayList<TestCodeSuccessCaseBean>();
 60             }
 61         } else if ("success-case".equals(qName)) {
 62             caseBean = new TestCodeSuccessCaseBean();
 63
 64             caseBean.setCaseNo(attrs.getValue("caseNo"));
 65             String tmpFlag = attrs.getValue("runFlg");
 66             caseBean.setHomePageURL(attrs.getValue("homePageURL"));
 67             if (tmpFlag != null && ("true".equals(tmpFlag) || "false".equals(tmpFlag))) {
 68                 caseBean.setRunFlg(new Boolean(tmpFlag));
 69             } else {
 70                 caseBean.setRunFlg(false);
 71             }
 72             actionConfig = new ArrayList<TestCodeActionBean>();
 73         } else if ("action".equals(qName)) {
 74             TestCodeActionBean actionConfigBean = new TestCodeActionBean();
 75
 76             actionConfigBean.setGamenID(attrs.getValue("gamenID"));
 77             actionConfigBean.setActionType(attrs.getValue("actionType"));
 78             actionConfigBean.setActionId(attrs.getValue("actionId"));
 79             actionConfigBean.setWaitItem(attrs.getValue("waitItem"));
 80             actionConfigBean.setDialog(attrs.getValue("dialog"));
 81             actionConfigBean.setActionPath(attrs.getValue("actionPath"));
 82             String inputFlg = attrs.getValue("inputField");
 83             if (inputFlg != null && ("true".equals(inputFlg) || "false".equals(inputFlg))) {
 84                 actionConfigBean.setInputField(new Boolean(inputFlg));
 85             } else {
 86                 actionConfigBean.setInputField(false);
 87             }
 88         }
 89     }
 90
 91     public void endElement(String uri, String localName, String qName)
 92             throws SAXException {
 93         if ("success-case".equals(qName)) {
 94             caseBean.setActionConfig(actionConfig);
 95             caseList.add(caseBean);
 96         } else if ("SytmBankCode".equals(qName)) {
 97             sytmBankBean.setTestCaseListBean(caseList);
 98         }
 99     }
100
101     private void readFieldValue(String xmlFile) {
102         try {
103             //创建 SAXParserFactory的一个新实例以配置和获取基于SAX的解析器以解析XML文档
104             SAXParserFactory spf = SAXParserFactory.newInstance();
105             //指定由此代码生成的解析器将不验证被解析的文档
106             spf.setValidating(false);
107             //使用当前配置的工厂参数创建 SAXParser 的一个新实例
108             SAXParser parser = spf.newSAXParser();
109             //返回由此类的实现封装的 XMLReader
110             XMLReader myreader = parser.getXMLReader();
111             //注册内容事件处理程序,指定当前的类为处理器,调用startElement()和endElement()方法
112             myreader.setContentHandler(this);
113             //用系统标识符URI创建新的输入源
114             InputSource source = new InputSource(xmlFile);
115             //解析来自输入源(字符流、字节流或 URI)的 XML文档
116             myreader.parse(source);
117         } catch (IOException e) {
118             e.printStackTrace();
119         } catch (SAXException ex) {
120             ex.printStackTrace();
121         } catch (ParserConfigurationException pcex) {
122             pcex.printStackTrace();
123         }
124     }
125
126     public TestCodeSytmBankBean getSytmBankBean() {
127         return sytmBankBean;
128     }
129     public String getFieldXmlFile() {
130         return fieldXmlFile;
131     }
132     public void setFieldXmlFile(String fieldXmlFile) {
133         this.fieldXmlFile = fieldXmlFile;
134     }
135
136     public static void main(String[] args){
137         SAXParserXML sAXParserXML = new SAXParserXML("E:/xml/TestXML.xml");
138         TestCodeSytmBankBean systemBean = sAXParserXML.getSytmBankBean();
139
140         System.out.println(systemBean.getBankCode());
141         System.out.println(systemBean.getBankName());
142         System.out.println(systemBean.getCaseNo());
143         System.out.println(systemBean.getLogonId());
144         System.out.println(systemBean.getPassword());
145
146         System.out.println(systemBean.getTestCaseListBean().get(0).getCaseNo());
147     }
148 }

运行结果:

1256
长虹基金
null
6228400210568
123456
ChangHong010on2ANC_01
时间: 2024-12-15 12:42:00

使用SAX解析XML文件的相关文章

SAX解析XML文件

SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准.SAX是一种轻量型的方法,不像DOM解析时,把XML文档全部载入内存中,在PC上操作,Dom还有 优势,但在手机中端上则无优势,因为手机内存和硬件都比不上PC强.使用 SAX 是比较安全的,并且 Android 提供了一种传统的 SAX 使用方法,以及一个便捷的 SAX 包装器.SAX采用基于事件驱动的处理方式,它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理. 在SAX接口中,事件源是org

JAVA SAX解析XML文件

[代码] [Java]代码view sourceprint?001package SAXparse;002 003 004import java.io.FileInputStream;005import java.lang.reflect.Array;006import java.lang.reflect.InvocationTargetException;007import java.lang.reflect.Method;008import java.text.ParseException;

SAX解析XML文件实例代码

import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.s

Python—使用xml.sax解析xml文件

什么是sax? SAX是一种基于事件驱动的API. 利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器. 解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件; 而事件处理器则负责对事件作出相应,对传递的XML数据进行处理. sax适于处理下面的问题: 1.对大型文件进行处理: 2.只需要文件的部分内容,或者只需从文件中得到特定信息: 3.想建立自己的对象模型的时候. 在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sa

cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)

今天是个好日子.我以为事情可以变得,明天是个好日子.打开门儿春风... 恩,听着歌写文档生活就是这么享受. 今天曾经的邻居大神突然在qq上赞了我一下,这让我异常激动啊.. 这还要从前前前几天说起,那会无意间看到cocos微信上的一个实话实说活动.反正就是參加了能够抽奖这样子啦.没错.我就是本着那官方T恤去的,本着分子越大分母越大抽奖几率越大的原则,然后就连着发了一番感慨.并且还都是比較罗嗦,没想到隔天cocos君居然给我回复了,中奖了有木有,cocos2dx的官方T恤,哈哈. .然后就是曾经的大

安卓SAX解析XML文件

XML文件常用的解析方式有DOM解析,SAX解析. 一.Sax SAX(simpleAPIforXML)是一种XML解析的替代方法.相比于DOM,SAX是一种速度更快,更有效的方法.它逐行扫描文档,一边扫描一边解析.而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂.SAX解析XML文档采用事件驱动模式.什么是事件驱动模式?它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理.基于事件驱动的处理模式主要是基于事件源和事件

sax解析xml文件,封装到对象中

创建User.java类 public class User { private String id; private String name; private String age; private String password; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public

解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

UI进阶 解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一