Comment mettre à jour XML à l'aide de XPath et Java
J'ai un document XML, et une expression XPath pour que le doc. - Je mettre à jour la doc en utilisant XPath au moment de l'exécution.
Comment puis-je faire cela à l'aide de Java?
Ci-dessous est mon xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<PersonList>
<Person>
<Name>Sonu Kapoor</Name>
<Age>24</Age>
<Gender>M</Gender>
<PostalCode>54879</PostalCode>
</Person>
<Person>
<Name>Jasmin</Name>
<Age>28</Age>
<Gender>F</Gender>
<PostalCode>78745</PostalCode>
</Person>
<Person>
<Name>Josef</Name>
<Age>232</Age>
<Gender>F</Gender>
<PostalCode>53454</PostalCode>
</Person>
</PersonList>
J'ai changer les valeurs de nom et l'âge de moins de //PersonList/Person[2]/Name
.
Vous devez vous connecter pour publier un commentaire.
Utilisation
setNodeValue
. Tout d'abord, obtenir une NodeList, par exemple:Puis définissez la valeur, par exemple le premier nœud:
Plus d'exemples par exemple ici.
Comme mentionné dans deux autres réponses ici, ainsi que dans votre question précédente: techniquement, XPath n'est pas une façon de "mettre à jour" d'un document XML, mais seulement de localiser les nœuds à l'intérieur d'un document XML. Mais je présume que le ci-dessus est ce que vous voulez.
MODIFIER: en Réponse à votre commentaire... demandez-vous comment écrire votre DOM à un fichier XML une fois que vous avez fini de modifier le DOM? Si oui, voici deux exemples de la façon de le faire:
http://www.java2s.com/Code/Java/XML/WriteDOMout.htm
http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT4.html
XPathConstants.NODE
si vous sélectionnez un nœud et d'omettre l'indice d'accèsmyNodeList.item(0)
, parce évaluer sera de retour d'uneNode
Vous pouvez supprimer le fichier et en créer un nouveau.
XPath est utilisé pour sélectionner des parties d'un document XML.Il n'a aucune disposition pour la mise à jour. Mais, puisqu'il revient DOM objets (les Éléments, si ma mémoire est bonne, ou peut-être des Nœuds) vous pouvez alors utiliser les méthodes du DOM pour modifier le document.
XPath
peut être utilisé pour sélectionnez nœuds dans un document, pas de modificationD'appliquer l'expression xpath de votre document et d'obtenir un élément (dans votre cas). Une fois que vous avez cette
Element
, vous pouvez utiliser leElement
méthodes pour modifier les valeurs (nom et de l'âge dans votre cas)À partir d'un
NodeList
il devrait fonctionner comme ça:Envisager l'utilisation de XQuery Update au lieu de XPath. Cela permet d'écrire
C'est beaucoup plus facile que d'utiliser le Java API DOM.
J'ai créé un petit projet pour l'utilisation de XPATH pour créer/mettre à jour le fichier XML:
https://github.com/shenghai/xmodifier
le code pour changer votre xml est comme:
Voici le code à modifier le contenu avec vtd-xml... vtd-xml est unique en ce qu'il est le seul de l'API, qui offre de mise à jour incrémentielle capacités.