XML响应如何为变量赋值

时间:2012-05-10 17:28:05

标签: java xml

我获取了http请求的xml repsonse。我将它存储为字符串变量

String str = in.readLine();

str的内容是:

<response>
    <lastUpdate>2012-04-26 21:29:18</lastUpdate>
    <state>tx</state>
    <population>
       <li>
           <timeWindow>DAYS7</timeWindow>
           <confidenceInterval>
              <high>15</high>
              <low>0</low>
           </confidenceInterval>
           <size>0</size>
       </li>
    </population>
</response>

我想将txDAYS7分配给变量。我该怎么做?

由于

1 个答案:

答案 0 :(得分:0)

来自http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

的略微修改的代码
public class ReadXMLFile {

    // Your variables
    static String state;
    static String timeWindow;

    public static void main(String argv[]) {

        try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            // Http Response you get
            String httpResponse = "<response><lastUpdate>2012-04-26 21:29:18</lastUpdate><state>tx</state><population><li><timeWindow>DAYS7</timeWindow><confidenceInterval><high>15</high><low>0</low></confidenceInterval><size>0</size></li></population></response>";

            DefaultHandler handler = new DefaultHandler() {

                boolean bstate = false;
                boolean tw = false;

                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

                    if (qName.equalsIgnoreCase("STATE")) {
                        bstate = true;
                    }

                    if (qName.equalsIgnoreCase("TIMEWINDOW")) {
                        tw = true;
                    }

                }

                public void characters(char ch[], int start, int length) throws SAXException {

                    if (bstate) {
                        state = new String(ch, start, length);
                        bstate = false;
                    }

                    if (tw) {
                        timeWindow = new String(ch, start, length);
                        tw = false;
                    }
                }

            };

            saxParser.parse(new InputSource(new ByteArrayInputStream(httpResponse.getBytes("utf-8"))), handler);

        } catch (Exception e) {
            e.printStackTrace();
        }

        System.out.println("State is " + state);
        System.out.println("Time windows is " + timeWindow);
    }

}

如果您将此作为某个流程的一部分运行,则可能需要从ReadXMLFile扩展DefaultHandler