在jdom中从Document中读取文本时出错?

时间:2011-10-03 16:06:55

标签: java xml jdom

我在这里问你一个关于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;
}

但是当我调试它时,我总能看到该函数没有读取任何内容。 你能帮我解决一下吗?

谢谢大家

编辑:很抱歉抱问这样一个noob问题,我在getchildren()中犯了一个错误;我应该写oid而不是oid

编辑2:实际上我改变了代码,因为我对我的问题发表了评论但现在,我唯一看到的是“\ n \ n”而不是“1.3.6.1.2.1.1”。您认为问题可能是什么?

2 个答案:

答案 0 :(得分:1)

乍一看,在我看来,没有“oid”的孩子,它有一个“oids”孩子。您尝试阅读的元素位于“oids”元素内。

您可以逐步尝试调试它,看看哪些元素没有被读取。如果不尝试,这将是我最好的猜测。

答案 1 :(得分: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;