0

我得到了 http 请求的 xml 响应。我将它存储为字符串变量

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>

我想将tx,分配DAYS7给变量。我怎么做?

谢谢

4

1 回答 1

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);
    }

}

如果您将其作为某个进程的一部分运行,您可能需要扩展ReadXMLFilefrom DefaultHandler

于 2012-05-10T18:46:51.947 回答