XML解析工具类
来源:互联网 发布:哈工大人工智能 编辑:程序博客网 时间:2024/05/19 09:13
这是一个接收xml格式的string,并进行解析的工具类。
注:该工具类参考了其他网友的代码,链接忘了。
测试类:
注:该工具类参考了其他网友的代码,链接忘了。
package com.jackie.mytestproject.xmltest;import java.io.IOException;import java.io.StringReader;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.InputSource;import org.xml.sax.SAXException;/** * @author jackie * */public class XMLBuilder {/** xml string */ private String xmlStr=null; /** xml对应的document */ private Document doc=null; /** xml根结点 */ private Element root=null; /** *构造函数说明: <p> *参数说明:@param path <p> * @throws IOException * @throws SAXException * @throws ParserConfigurationException **/ public XMLBuilder(String xmlStr) throws ParserConfigurationException, SAXException, IOException { this.xmlStr=xmlStr; doc = getDocument(xmlStr); buildRoot(); } public Document getDocument(String xml) throws ParserConfigurationException, SAXException, IOException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();StringReader sr = new StringReader(xml);InputSource is = new InputSource(sr);Document doc = builder.parse(is); return doc; } /** * 方法名称:buildRoot<p> * 方法功能:生成XML的根结点<p> * 参数说明: <p> * 返回:void <p> **/ private void buildRoot() { root=doc.getDocumentElement(); } public NodeList getNodeList() { return root.getChildNodes(); } public Element [] getElementsByName(String name) { List<Node> resList=new ArrayList<Node>(); NodeList nl=getNodeList(); for(int i=0;i<nl.getLength();i++) { Node nd=nl.item(i); if(nd.getNodeName().equals(name)) { resList.add(nd); } } Element [] res=new Element [resList.size()]; for(int i=0;i<resList.size();i++) { res[0]=(Element)resList.get(i); } return res; } public static String getElementName(Element element) { return element.getNodeName(); } public String getElementValue(Element element) { NodeList nl=element.getChildNodes(); for(int i=0;i<nl.getLength();i++) { if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一个Text Node { return element.getFirstChild().getNodeValue(); } } return null; } public String getElementAttr(Element element,String attr) { return element.getAttribute(attr); } /** * @return 返回 doc。 */ public Document getDoc() { return doc; } /** * @param doc 要设置的 doc。 */ public void setDoc(Document doc) { this.doc = doc; } /** * @return 返回 xmlStr。 */ public String getXmlStr() { return xmlStr; } /** * @param path 要设置的 xmlStr。 */ public void setXmlStr(String xmlStr) { this.xmlStr = xmlStr; } /** * @return 返回 root。 */ public Element getRoot() { return root; } /** * @param root 要设置的 root。 */ public void setRoot(Element root) { this.root = root; }}
测试类:
package com.jackie.mytestproject.xmltest;import org.w3c.dom.Element;public class XMLBuilderTester {public static void main(String[] args) {try {StringBuffer sb = new StringBuffer();sb.append("<MSG type=\"msg\" sequence=\"\" calltype=\"\">");sb.append("<Result code=\"0\" attr=\"test\" attr2=\"\" attr3=\"\" attr4=\"\"/>");sb.append("</MSG>");String xml = sb.toString();XMLBuilder xmlBl = new XMLBuilder(xml);Element[] eList = xmlBl.getElementsByName("Result");System.out.println(xmlBl.getElementValue(eList[0]));System.out.println(xmlBl.getElementAttr(eList[0], "attr"));} catch(Exception e) {e.printStackTrace();}}}
0 0
- XML 解析工具类
- xml解析工具类
- XML解析工具类
- xml解析工具类
- XML解析工具类
- XML解析工具类
- xml解析工具类
- XML解析工具类
- xml解析工具类
- 解析xml工具类
- 解析xml的工具类
- dom4j-----解析xml工具类
- XStream工具类解析XML
- xml解析的工具类
- XML文件解析工具类pull解析
- 文件(XML)解析处理工具类
- dom4j解析xml(含工具类)
- 安卓快速解析xml工具类
- Android 含有图片和文字的Button的实现
- 客户端(浏览器端)数据存储技术概览
- Xmlns与targetNamespace 的区别
- JAVA移位运算符
- 单向链表
- XML解析工具类
- 题目1040:Prime Number
- 【Linux】Nginx负载均衡配置
- 双向链表
- Android使用MediaPlayer开发时抛IllegalStateException
- 基于FreeRTOS的队列管理的应用
- 单点登录
- ViewPager刷新单个页面的方法
- 事件驱动