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 に答える