Ajouter de nouveaux attributs à un nœud XML en java?
Je veux ajouter un attribut à un nœud xml.Je ne veux pas ajouter de nouveaux éléments (nouveaux noeuds) de mon fichier xml, je veux juste ajouter un nouvel attribut. Comment puis-je faire cela?
En particulier, j'ai essayé cette ligne de code:
Element process = doc.getElementsById("id");
process.setAttribute("modelgroup", "");
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("C:\\Users\\Blerta\\workspaceKEPLER\\XML_to_JSON\\SampleExample.xml"));
transformer.transform(source, result);
Mais j'obtiens l'exception suivante:
Exception in thread "main" java.lang.NullPointerException
at Main.appendAttributes(Main.java:172)
at Main.displayNodes(Main.java:65)
at Main.displayNodes(Main.java:138)
at Main.main(Main.java:42)**
coller la ligne où nullpointer se passe
OriginalL'auteur user2966458 | 2013-11-18
Vous devez vous connecter pour publier un commentaire.
dans les DOM parser c'est très facile. obtenez votre nœud et tout simplement utiliser cette fonction.
puis enfin la mise à jour de votre document. comme cela..
doc.getElementsByTagName("process"); il est de retour NodeList. essayez comme ceci. NodeList liste = doc.getElementsByTagName("process");. Élément el = (Element)de la liste.item(0); ensuite, vous pouvez utiliser el.setAttribute("attr_name","attr_val");
Que faire si le nœud n'est pas moulage de l'Élément?
simplement des Exceptions...
OriginalL'auteur subash
Le plus facile et le plus court est de jeter le nœud de org.le w3c.dom.Élément et ensuite invoquer setAttribute:
Oui, si l'aNode ne s'étend pas Élément de la classe?
il n'est pas judicieux d'ajouter un attribut à quelque chose qui n'est pas un Élément.
Une exception sera levée si
aNode
n'est pas moulage de l'Élément.Eh bien, oui, évidemment. C'est exactement ce qui DEVRAIT se produire, parce que l'ajout d'un attribut à quelque chose qui n'est pas un Élément n'a pas de sens.
OriginalL'auteur Sergey Tarasov
Vous pourriez le faire en quelques lignes à l'aide de xslt. Oracle avoir une demi décent tutoriel avec tous les extraits de code http://docs.oracle.com/javase/tutorial/jaxp/xslt/transformingXML.html
Le plus important pour votre xslt serait quelque chose comme ce qui suit:
OriginalL'auteur stripybadger
Approche recommandée:
Approche situationnelle:
Utilisez uniquement le try-catch approche si vous savez déjà que tous les nœuds que vous processus doit être de type "Élément" (et donc, de tout autre cas est une "exception" et devrait pause dans le code).
OriginalL'auteur Yeti