-1

XML ファイルを解析して、特定のタグの属性を取得しようとしています。以下は私のXMLファイルです-

<?xml version="1.0" encoding="UTF-8"?>
<app hash='nv' name='Tech' package='1.0' version='13' filesize='200' create_date='01-03-1987' upate_date='07-09-2013' >
    <url>
        <name>RJ</name>
        <score>10</score>
    </url>
    <url>
        <name>ABC</name>
        <score>20</score>
    </url>
</app>

上記の XML ファイルからハッシュ、名前、パッケージ、バージョン、ファイルサイズ、create_date、update_date の値を取得しようとしています。

以下は、上記の XML ファイルを解析しようとしているコードですが、appタグから上記の必須属性を取得する方法がわかりません。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

try {

    InputStream is = request.getInputStream();
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);
    doc.getDocumentElement().normalize();

    System.out.println("root of xml file" + doc.getDocumentElement().getNodeName());

    //get hash, name, package value from the app tag in the XML file

    } catch (Exception e) {
      System.out.println(e);
    }

誰でもこれで私を助けてもらえますか?

4

1 に答える 1

2

Jsoupを使用できます。これは、XML ベースのドキュメントを操作するための Java の優れたライブラリです。

あなたの場合、「app」タグでタグを取得し、その属性を次のように解析できます。

String result = getStringFromInputStream(is);

Document doc = Jsoup.parse(result, "", Parser.xmlParser());
Element e = doc.getElementsByTag("app").first();

System.out.println(e.attr("hash"));
System.out.println(e.attr("name"));

//etc...

InputStream を文字列に変換するには、MyKong のメソッドを使用できます。

private static String getStringFromInputStream(InputStream is) {

    BufferedReader br = null;
    StringBuilder sb = new StringBuilder();

    String line;
    try {

        br = new BufferedReader(new InputStreamReader(is));
        while ((line = br.readLine()) != null) {
            sb.append(line);
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    return sb.toString();

}

幸運を!

于 2013-07-14T17:48:43.703 に答える