50,523
社区成员
发帖
与我相关
我的任务
分享
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if("RecordList".equals(qName)){
this.soapMessageflag = true;
}
if(soapMessageflag && !"RecordList".equals(qName))
{
soapMessage.append("<");
soapMessage.append(qName);
soapMessage.append(">");
}
preTag = qName;//将正在解析的节点名称赋给preTag
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("RecordList".equals(qName)){
this.soapMessageflag = false;
System.out.println(soapMessage.toString());
}
if(soapMessageflag && !"RecordList".equals(qName))
{
soapMessage.append("</");
soapMessage.append(qName);
soapMessage.append(">");
}
preTag = null;
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
if(preTag!=null){
String content ="";
if(xxxx)
{}
else
{
content = new String(ch,start,length);
if(soapMessageflag)
{
soapMessage.append(content);
}
}
}
}
public class GetInnerXmlTextDemo {
public static void main(String[] args) throws Exception {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(new OuterHandler(xr));
xr.parse("input.xml");
}
}
class OuterHandler implements ContentHandler {
private XMLReader xmlReader;
public OuterHandler(XMLReader xmlReader) {
this.xmlReader = xmlReader;
}
public void setDocumentLocator(Locator locator) {
}
public void startDocument() throws SAXException {
}
public void endDocument() throws SAXException {
}
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
}
public void endPrefixMapping(String prefix) throws SAXException {
}
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
if("RecordList".equals(qName)) {
xmlReader.setContentHandler(new KeepContentHandler(xmlReader, this));
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
}
public void characters(char[] ch, int start, int length)
throws SAXException {
}
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
public void processingInstruction(String target, String data)
throws SAXException {
}
public void skippedEntity(String name) throws SAXException {
}
}
class KeepContentHandler implements ContentHandler {
private int depth = 1;
private XMLReader xmlReader;
private ContentHandler contentHandler;
public KeepContentHandler(XMLReader xmlReader, ContentHandler contentHandler) {
this.contentHandler = contentHandler;
this.xmlReader = xmlReader;
}
public void setDocumentLocator(Locator locator) {
}
public void startDocument() throws SAXException {
}
public void endDocument() throws SAXException {
}
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
}
public void endPrefixMapping(String prefix) throws SAXException {
}
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
System.out.print("<"+qName+">");
depth++;
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
depth--;
if(0 == depth) {
xmlReader.setContentHandler(contentHandler);
} else{
System.out.println("</"+qName+">");
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.print(new String(ch, start, length));
}
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
public void processingInstruction(String target, String data)
throws SAXException {
}
public void skippedEntity(String name) throws SAXException {
}
}