您的位置:首页 > 其它

sax解析xml字符串

2015-12-18 10:12 260 查看
package apphttptest;

import java.io.StringReader;

import java.util.List;

import javax.xml.parsers.SAXParser;

import javax.xml.parsers.SAXParserFactory;

import org.jdom.Document;

import org.jdom.Element;

import org.jdom.Namespace;

import org.jdom.input.SAXBuilder;

import org.w3c.dom.NodeList;

import org.xml.sax.Attributes;

import org.xml.sax.HandlerBase;

import org.xml.sax.InputSource;

import org.xml.sax.SAXException;

import org.xml.sax.helpers.DefaultHandler;

public class SAXReadXmlStrTest extends DefaultHandler {
private static String xmlStr = "<CARD><Message><DQRes><version>1.0.1</version><instId>0001</instId><certId>0001</certId><date>20151126 16:33:45</date><serialNo>20151126 043340334022552</serialNo></DQRes></Message></CARD>";

public static void main(String[] args) throws Exception {
saxnewtest();
}

/**
* 使用sax解析xml字符串

* @author 龙

*/
public static void saxtest() throws Exception {
StringReader read = new StringReader(xmlStr);
InputSource source = new InputSource(read);
SAXBuilder sb = new SAXBuilder();
Document doc = sb.build(source);
Element root = doc.getRootElement();
// System.out.println(root.getName());// 输出根元素的名称(测试)
List jiedian = root.getChildren();
for (int i = 0; i < jiedian.size(); i++) {
Element element = (Element) jiedian.get(i);
String firstname = element.getName();
System.out.println("name:" + element.getName() + ";value:" + element.getText());
List mwglist = element.getChildren();
System.out.println("mwglist:" + mwglist.size());
for (int j = 0; j < mwglist.size(); j++) {
Element element2 = (Element) mwglist.get(j);
System.out.println("name:" + element2.getName() + ";value:" + element2.getText());
List deslist = element2.getChildren();
System.out.println("deslist:" + deslist.size());
for (int k = 0; k < deslist.size(); k++) {
Element element3 = (Element) deslist.get(k);
System.out.println("name:" + element3.getName() + ";value:"
+ element3.getText());
}
}
}
}

private static void saxnewtest() throws Exception {
StringReader read = new StringReader(xmlStr);
InputSource source = new InputSource(read);
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
SAXReadXmlStrTest saxReadXmlStrTest = new SAXReadXmlStrTest();
parser.parse(source, saxReadXmlStrTest);

}

@Override
public void startDocument() throws SAXException {
System.out.println("开始解析xml字符串");
}

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
System.out.println("开始解析xml的element>>>uri:" + uri);
System.out.println("开始解析xml的element>>>localName:" + localName);
System.out.println("开始解析xml的element>>>qName:" + qName);
System.out.println("开始解析xml的element>>>attributes----id:" + attributes.getValue(0));
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("解析xml节点结束>>>uri:" + uri);
System.out.println("解析xml节点结束>>>localName:" + localName);
System.out.println("解析xml节点结束>>>qName:" + qName);
System.out.println("解析xml节点结束>>>uri:" + uri);
}

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
String content = new String(ch, start, length);
System.out.println("开始获取节点element的值content:" + content);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  j2ee