0

jdomについての基本的な質問をするためにここにいます。Documentオブジェクトを読み込もうとしていますが、常にエラーが発生します。私が読み込もうとしている文書は、

<message>
<header>
<messageType>snmp</messageType>
<sendFrom>192.168.0.16</sendFrom>
<hostName>oghmasysMehmet</hostName>
<sendTo>192.168.0.12</sendTo>
<receiverName>Mehmet</receiverName>
<date>03/10/2011</date>
</header>
<body>
<snmpType>getbulk</snmpType>
<ip>127.0.0.1</ip>
<port>161</port>
<oids>
  <oid>1.3.6.1.2.1.1</oid>
</oids>
<community>public</community>
<nR>0</nR>
<mR>5</mR>
</body>
</message>

そして私は大切にしようとしています。それを行うために、私は関数を書きました、

public Vector<String> getOIDs(Document document){ 

    Vector<String> oids = new Vector<String>();

    Element root = document.getRootElement();
    Element body = root.getChild("body");
    //Element element = body.getChild("oids");
    List rows = body.getChildren("oid");
    for (int i = 0; i < rows.size(); i++) {
        Element row = (Element) rows.get(i);
        String s = row.getText();
        oids.add(s);
    }
    return oids;
}

しかし、デバッグすると、関数によって読み取られるものが何もないことが常にわかります。それについて私を助けてくれませんか?

皆さん、ありがとうございました

編集:そのような初心者の質問をしてすみません、私はちょうどgetchildren();で間違いを犯しました。oidの代わりにoidを書くべきだった

編集2:実際には、質問にコメントしたときにコードを変更しましたが、今読んだのは「1.3.6.1.2.1.1」ではなく「\ n\n」だけです。問題は何だと思いますか?

4

2 に答える 2

1

一見すると、「oid」の子はなく、「oid」の子があります。読み込もうとしている要素は「oids」要素の中にあります。

ステップバイステップでデバッグしてみて、読み取られていない要素を確認できます。それは試さずに私の最善の推測でしょう。

于 2011-10-03T16:13:13.790 に答える
0

コメントアウトされた行は正しかったので、その下の行を更新して一致させる必要があります。あなたのリストは次のようになります:

 Vector<String> oids = new Vector<String>();
 Element root = document.getRootElement();
 Element body = root.getChild("body");
 Element element = body.getChild("oids");
 List rows = element.getChildren("oid");
 for (int i = 0; i < rows.size(); i++) {
      Element row = (Element) rows.get(i);
      String s = row.getText();
      oids.add(s);
 }
 return oids;   
于 2011-10-03T16:54:11.587 に答える