簡體   English   中英

解析一個簡單的xml字符串

[英]Parse a simple xml string

我有一個簡單的xml,想要檢索'String'中保存的值,該值為True或False。 有很多建議的方法看起來很復雜! 最好的方法是什么?

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">"True"</string>

我能夠將xml讀入xmlReader,如下所示。

XMLReader xmlReader = SAXParserFactory.newInstance()
                        .newSAXParser().getXMLReader();           
InputSource source = new InputSource(new StringReader(response.toString()));
xmlReader.parse(source);

我現在如何從讀者那里獲得價值?

您首先需要定義一個處理程序:

public class MyElementHandler extends DefaultHandler {
        private boolean isElementFound = false;
        private String value;

    public String getValue() {
        return value;
    }

        @Override
        public void startElement(String uri, String localName, String qName, Attributes attributes) {
            if (qName.equals("elem")) {
                isElementFound = true;
            }
        }

        @Override
        public void endElement(String uri, String localName, String qName) {
            if (qName.equals("elem")) {
                isElementFound = false;
            }
        }

        @Override
        public void characters(char ch[], int start, int length) {
            if (isElementFound) {
                value = new String(ch).substring(start, start + length);
            }
        }
    }

然后,您解析xml,如下所示:

String xml = response.toString();
XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader();
InputSource source = new InputSource(new StringReader(xml));
//-- create handlers
MyAttributeHandler handler = new MyAttributeHandler();
xmlReader.setContentHandler(handler);
xmlReader.parse(source);
System.out.println("value = " + handler.getValue());

關於sax解析的更一般的問題

這里不需要XML。 雙線:

String xmlContent = response.toString();
String value = xmlContent.replaceFirst("(?sm)^.*<string[^>]*>([^<]*)<.*$", "$1");

if (value == xmlContent) { // No replace
    throw new IllegalStateException("Not found");
}
boolean result = Boolean.valueOf(value.trim().toLowerCase());

使用XML可以做到:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(inputSource);
String xml = doc.getDocumentElement().getTextContent();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM