WebService之XML解析
来源:互联网 发布:支付宝对淘宝的帮助 编辑:程序博客网 时间:2024/05/22 15:46
1.SAX解析,是一行一行的把xml文件读到内存,通过是时间通知的方式来解析的,有点比较省内存,适合与移动开发。
package com.hw;
import java.io.StringWriter;
import java.util.LinkedList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
public class SAXhw extends DefaultHandler {
private static final String _MY_MESSAGE_NAMESPACE_URI = "http://schemas.xmlsoap.org/wsdl/";
private static final String _MESSAGE_ELEMENT_NAME = "message";
private static final String _OPERATION_BINDING_NAME = "operation";
private static final String _BINDING_NAME = "binding";
private boolean _messageFound = false;
private boolean _operationFound = false;
private boolean _bindingFound = false;
private boolean _bindingIsOver = true;
private LinkedList _messages = new LinkedList();
private LinkedList _operationName = new LinkedList();
public void startElement(String namespaceURI,
String localName,
String qualifiedName,
Attributes attributes)
throws SAXException
{
_messageFound = namespaceURI.toLowerCase().equals(
_MY_MESSAGE_NAMESPACE_URI)
&&
localName.toLowerCase().equals(_MESSAGE_ELEMENT_NAME);
if (_messageFound) {
_messages.add(attributes.getValue(0).toString());
}
//The work 2:
_bindingFound = namespaceURI.toLowerCase().equals(
_MY_MESSAGE_NAMESPACE_URI)
&&
localName.toLowerCase().equals(_BINDING_NAME);
if (_bindingFound) {
_bindingIsOver = false;
}
_operationFound = namespaceURI.toLowerCase().equals(
_MY_MESSAGE_NAMESPACE_URI)
&&
localName.toLowerCase().equals(_OPERATION_BINDING_NAME);
if (_operationFound && !_bindingIsOver) {
_operationName.add(attributes.getValue(0));
package com.hw;
import java.io.StringWriter;
import java.util.LinkedList;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
public class SAXhw extends DefaultHandler {