2016-11-09 2 views
2

Je dois modifier plusieurs valeurs d'un fichier XML, mais lorsque j'exécute la ligne .setText, il affiche l'erreur java.lang.NullPointerException et je ne comprends pas pourquoi.Erreur de modification des valeurs dans le noeud d'un xml

<?xml version="1.0" encoding="UTF-8"?> 
<prueba> 
<reg id="576340"> 
    <dato cant="680" id="1" val="-1" num="" desc="" /> 
    <dato cant="684" id="5" val="-1" num="" desc="" /> 
    <dato cant="1621" id="1" val="-1" num="" desc="Hi" /> 
    <dato cant="1625" id="5" val="-1" num="" desc="Hola" /> 
</reg> 
</prueba> 

Voici le code:

public static void main(String[] args) throws FileNotFoundException, 
JDOMException, IOException { 

    File xml = new File("c:\\prueba3.xml"); 
    XMLOutputter xmlOut = new XMLOutputter(); 
    Document doc = (Document) new SAXBuilder().build(xml); 
    Element raiz = doc.getRootElement(); 
    List articleRow = raiz.getChildren("reg"); 

    for (int i = 0; i < articleRow.size(); i++) { 

     Element row = (Element) articleRow.get(i); 
     List images = row.getChildren("dato"); 

     for (int j = 0; j < images.size(); j++) { 

      Element row2 = (Element) images.get(j); 
      String texto = row2.getAttributeValue("desc") ; 
      String id = row2.getAttributeValue("id"); 

      if ((texto != null) && (texto !="") && 
       (id.equals("1") || id.equals("2"))){ 
        row2.getChild("desc").setText("valor"); 
      } 
     } 
    } 
    xmlOut.setFormat(Format.getPrettyFormat()); 
    xmlOut.output(doc, new FileWriter("c:\\prueba3.xml")); 
    System.out.println("fin"); 
} 

Salutations et merci.

+0

@ La réponse de kaitoy est correcte, il devrait être row2.getAttribute ("desc") setValue ("Valor"). – Waqas

+0

Avec row2.getAttribute ("desc"). SetValue ("valor"); Désolé pour le désagrément salutations. –

Répondre

2

row2.getChild("desc").setText("valor");

Cela semble mal. desc est un attribut, pas un enfant, n'est-ce pas?

Il devrait être row2.getAttributeNode("desc").setValue("valor")