小弟的程序会收到如下一个XML文件,
<Lignes>
  <NumeroPosteCommande>9</NumeroPosteCommande> 
  <TypeLigne>QT-F-REC</TypeLigne> 
  <ReferenceArticleVendeur>H_I&C_821066</ReferenceArticleVendeur>  
</Lignes>有时候文件可能会缺少某个标签,结果如
<Lignes>
  <NumeroPosteCommande>9</NumeroPosteCommande> 
  <TypeLigne>QT-F-REC</TypeLigne> 
</Lignes>问题:我事先不知道会收到哪种XML文件,但我要处理Lignes下所有的LABEL,所以我想以判断<Lignes>的开始和结束</Lignes>来判断是否完成Lignes部分的处理。但是用什么方法知道<Lignes></Lignes>开始和结束呢?JDOM?求代码,不胜感激

解决方案 »

  1.   

    如果没有结束的话,会报错的。会告诉你xml解析错误。
      

  2.   

    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.util.List;public class Main {
      public static void main(String[] args) {
        String data = "<root><row><column name='username' length='6'>admin</column>"
            + "<column name='password' length='1'>p</column></row><row>"
            + "<column name='username' length='6'>j</column>"
            + "<column name='password' length='8'>q</column></row></root>";    SAXBuilder builder = new SAXBuilder();
        Document document = builder.build(new ByteArrayInputStream(data.getBytes()));    Element root = document.getRootElement();    List rows = root.getChildren("row");
        for (int i = 0; i < rows.size(); i++) {
          Element row = (Element) rows.get(i);
          List columns = row.getChildren("column");
          for (int j = 0; j < columns.size(); j++) {
            Element column = (Element) columns.get(j);
            String name = column.getAttribute("name").getValue();
            String value = column.getText();
            int length = column.getAttribute("length").getIntValue();        System.out.println("name = " + name);
            System.out.println("value = " + value);
            System.out.println("length = " + length);
          }
        }
      }
    }