Comment mettre à jour des fichiers xml en java
J'ai un fichier xml appel data.xml comme le code ci-dessous. Le projet peut exécuter à partir du côté client, pas de problème et il peut lire le fichier xml. Le problème que j'ai maintenant c'est que je veux écrire une fonction qui permet de mettre à jour la date de début et date de fin. Je n'ai aucune idée de comment obtenir le départ. Aide sera appréciée.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<data>
<username>admin</username>
<password>12345</password>
<interval>1</interval>
<timeout>90</timeout>
<startdate>01/01/2013</startdate>
<enddate>06/01/2013</enddate>
<ttime>1110</ttime>
</data>
mon main.java
public class main
{
public static void main(String[] args)
{
Calendar cal2 =null;
try {
//read the xml
File data = new File("data.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(data);
doc.getDocumentElement().normalize();
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
username = getValue("username", element);
startdate = getValue("startdate", element);
enddate = getValue("enddate", element);
}
}
date = startdate;
Date date_int = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).parse(date);
cal2 = Calendar.getInstance();
cal2.setTime(date_int);
//loop the child node to update the initial date
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
setValue("startdate", element , date_int.toString());
}
}
//write the content in xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("data.xml"));
transformer.transform(source, result);
} catch (Exception ex) {
log.error(ex.getMessage());
ex.printStackTrace();
}
}
private static void setValue(String tag, Element element , String input) {
NodeList nodes = element.getElementsByTagName(tag).item(0).getChildNodes();
Node node = (Node) nodes.item(0);
node.setTextContent(input);
}
stackoverflow.com/questions/6124239/... et stackoverflow.com/questions/7646607/...
Au moins montrer votre code qu'avez-vous essayé
Au moins montrer votre code qu'avez-vous essayé
OriginalL'auteur Big Ticket | 2015-07-29
Vous devez vous connecter pour publier un commentaire.
Premièrement, il y a une erreur dans votre XML vous avez des
<data>
tag . J'ai supprimé. Maintenant, vous avez deux options, vous pouvez soit utiliserSAX
ouDOM
. Je diraisDOM
raison étant que vous pouvez lire l'intégralité des données XML à l'aideDOM
et pour un petit morceau de XML comme ceci c'est le meilleur choix.Code
Corrigé XML
Ma Réponse déjà fait . s'il vous plaît essayer le code que j'ai donné ici .
Dans ma réponse, je ne suis que la mise à jour de
startdate
vous pouvez ajouterenddate
OriginalL'auteur Shahzeb
Commencez par charger le fichier XML...
Maintenant, il ya quelques façons de le faire, mais tout simplement, vous pouvez utiliser le chemin xpath de l'API de trouver les nœuds que vous voulez et mettre à jour leur contenu
Puis enregistrez le
Document
dans le fichier...Vous pouvez simplement utiliser Java 8 est le Temps de l'API qui est simple à utiliser, la manipulation, l'analyse et la mise en forme
Allez-vous être en mesure de fournir un exemple?
Quelque chose de similaire à this
Salut, je vous remercie pour votre répondre, maintenant que j'ai mis à jour ma réponse, comment allez-vous appliquer que dans mon code? J'utilise Dom Parser au lieu de XPath. Merci
OriginalL'auteur MadProgrammer
Ce un exemple que j'ai essayé de mettre à jour les fichiers xml.
Suivant est le fichier XML, j'ai utilisé:
Espère que cela aide!
OriginalL'auteur Deep Mistry