<DetailList></DetailList>对里面有两个<Detai>元素,看是不是这里的问题,如果不是,那调试下看哪步取得空值,是不是<Hold2>对重复造成的。调试试试

解决方案 »

  1.   

    你for循环应该取nl1里的值才对,但你的循环和nl1都没有半点关系。
      

  2.   

    就是获取hold2的时候报的错误
      

  3.   

    Hold1  有 3 个
    Hold2 有 2个 j = 2 出界。<Voucher>
    <Hold1>1</Hold1>
    <DetailList>
    <Detail>
    <Hold1>1</Hold1>
    <Hold2>1</Hold2>
    </Detail>
    <Detail>
      

  4.   


    我就是要获取明细里面的hold值啊,要怎么获取呢?
      

  5.   


    import java.io.*;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;public class TzTest { public static void main(String[] args) {
    Element element = null;
    // 可以使用绝对路劲
    File f = new File("1.xml"); // documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
    DocumentBuilder db = null;
    DocumentBuilderFactory dbf = null;
    try {
    // 返回documentBuilderFactory对象
    dbf = DocumentBuilderFactory.newInstance();
    // 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
    db = dbf.newDocumentBuilder(); // 得到一个DOM并返回给document对象
    Document dt = db.parse(f);
    // 得到一个elment根元素
    element = dt.getDocumentElement();
    // 获得根节点
    System.out.println("根元素:" + element.getNodeName()); // 获得根元素下的子节点
    NodeList childNodes = element.getChildNodes(); // 遍历这些子节点
    for (int i = 0; i < childNodes.getLength(); i++) {
    // 获得每个对应位置i的结点
    Node node1 = childNodes.item(i);
    if (node1.hasChildNodes()) {
    NodeList nodeDetail = node1.getChildNodes();
    // 遍历<DetailList>下的节点
    for (int j = 0; j < nodeDetail.getLength(); j++) {
    Node detail = nodeDetail.item(j);
    if (detail.hasChildNodes()) {
    NodeList holds = detail.getChildNodes();
    for (int k = 0; k < holds.getLength(); k++) {
    Node hold = holds.item(k);
    System.out.println(hold.getNodeName() + " -> " + hold.getTextContent());
    }
    }
    }
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
      

  6.   

    String s="<?xml version=\"1.0\" encoding=\"GBK\" ?>";
    s+="<Voucher>";
    s+="<Hold1>1g</Hold1>";
    s+="<DetailList>";
    s+="<Detail>";
    s+="<Hold1>1a</Hold1>";
    s+="<Hold2>1b</Hold2>";
    s+="</Detail>";
    s+="<Detail>";
    s+="<Hold1>2c</Hold1>";
    s+="<Hold2>2d</Hold2>";
    s+="</Detail>";
    s+="</DetailList>";
    s+="</Voucher>";
    Document d = Jsoup.parse(s);
    Elements  es =null;
     es = d.getElementsByTag("Hold1");
    for (Element e : es) {
    System.out.println(e.text());
    }
    System.out.println("------");
    es = d.getElementsByTag("Hold2");
    for (Element e : es) {
    System.out.println(e.text());
    }
      

  7.   

    jsoup地址
      

  8.   


    NodeList nl1 = doc.getElementsByTagName("Detail");
    for(int j=0;j<nl1.getLength(); j++)
    {
        String hold1 = doc.getElementsByTagName("Hold1").item(j).getFirstChild().getNodeValue();
        String hold2 = doc.getElementsByTagName("Hold2").item(j).getFirstChild().getNodeValue();
    }for(int j=0;j<nl1.getLength(); j++) j从0开始,j < nl1.length() 不能带等于
      

  9.   


    for(int j=1;j<=nl1.getLength(); j++)
    改为 for(int j=0;j<nl1.getLength(); j++)