2014-05-19 2 views
1

DOM을 사용하여 XML 파일을 구문 분석하려고합니다. 하지만 XML 파일에서 볼 수 있듯이 노드에서 NULL 값을 얻고 있습니다. 모든 값이 있습니다 ... 잠시 동안 노력했지만이 문제에 대한 해결책을 찾을 수 없습니다. 나는 자바 프로그래밍에 아주 초보자, 그래서 아마 초보자 오류입니다,하지만 난 XML DOM 구문 분석, 모든 getNodeValue()에 NULL 가져 오기

내가 구문 분석있어 XML입니다 ... 지금 매우 좌절 점점 해요 : 나는 '

<root> 
    <seguro> 
     <seg_tipo>cocacola</seg_tipo> 
     <seg_subtipo>cocacola</seg_subtipo> 
     <seg_title>cocacola</seg_title> 
     <seg_descr>cocacola</seg_descr> 
     <seg_carac_title>cocacola</seg_carac_title> 
     <seg_carac>cocacola</seg_carac> 
    </seguro> 
    <seguro> 
    <seg_tipo>fantanaranja</seg_tipo> 
    <seg_subtipo>fantanaranja</seg_subtipo> 
    <seg_title>fantanaranja</seg_title> 
    <seg_descr>fantanaranja</seg_descr> 
    <seg_carac_title>fantanaranja</seg_carac_title> 
    <seg_carac>fantanaranja</seg_carac> 
    </seguro> 
</root> 

일부에서 System.out.println을 설정했습니다() 나에게 노드 값의 이름을 말해, 이것은 내가 무엇을 얻을 수 있습니다 :

seg_tipo -- null 
seg_subtipo -- null 
seg_title -- null 
seg_descr -- null 
seg_carac_title -- null 
seg_carac -- null 
/n-------------------------------------/n 
seg_tipo -- null 
seg_subtipo -- null 
seg_title -- null 
seg_descr -- null 
seg_carac_title -- null 
seg_carac -- null 
/n-------------------------------------/n 

나는 그것이 작동하지 수는 ...이 코드입니다 XML을 구문 분석합니다. XML :

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
       DocumentBuilder builder = factory.newDocumentBuilder(); 
       File fileXML = new File("seguros.xml"); 
       Document document = builder.parse(fileXML); 

       Element root = document.getDocumentElement(); 
       NodeList items = root.getElementsByTagName("seguro"); 
//    System.out.println(items.getLength()); 
//    System.out.println(items.item(1).getNodeName()); 

       for (int i = 0; i < items.getLength(); i++) { 
        Seguro seguroActual = new Seguro(); 
        Node item = items.item(i); 
        NodeList datosSeguro = item.getChildNodes(); 
        for (int j = 0; j < datosSeguro.getLength(); j++) { 
//      System.out.println(datosSeguro.getLength()); 
         Node dato = datosSeguro.item(j); 
         String etiqueta = dato.getNodeName(); 
         System.out.println(dato.getNodeName()+" -- "+dato.getNodeValue()); 

         if (etiqueta.equals("seg_tipo")) { 
          seguroActual.setSeg_tipo(dato.getNodeValue()); 
//       System.out.println("El tipo del seguro es: " + dato.getNodeValue()); 
         } else if (etiqueta.equals("seg_subtipo")) { 
          seguroActual.setSeg_subtipo(dato.getNodeValue()); 
//       System.out.println("El subtipo del seguro es: " + seguroActual.getSeg_subtipo()); 
         } 
        } 
        System.out.println("/n-------------------------------------/n"); 
        AlmacenSeguros.getInstance().guardarSeguro(seguroActual); 
       } 

아마도 이것은 매우 간단한 문제이지만 답변을 찾을 수 없습니다 ... ... ( 미리 감사드립니다!

답변

1

요소 자체는 실제로 값을 가지고 있지 않지만, 아이 같은 텍스트 노드가 않습니다 :

<root> 
    <seguro> 
    <seg_tipo> 
     #text: cocacola 

가 요소의 텍스트를 얻을 수 (및 모든 하위)하려면, 사용을 getNodeValue() 대신 getTextContent()입니다.