J'ai un modèle fixe de XML et les nœuds peuvent augmenter selon les données. Si j'ai un modèle fixe. Comment itérer tous les nœuds enfants lorsque le nom du nœud parent est fourni? Puis-je créer un fichier XML basé sur xpath?comment faire un fichier XML dynamique en utilisant java
J'ai le code follwoing: -
Map map = hm();
Set set = map.entrySet();
// Get an iterator
Iterator it = set.iterator();
// Display elements
while(it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
if (check) {
xpath_String+= "|"+me.getKey();
}else {
xpath_String+= me.getKey();
check = true;
}
}
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
//xml file name acts as template
Document doc = builder.parse("template.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile(xpath_String);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
System.out.println("Total number of tokens: "+nodes.getLength());
//for (int i = 0; i < nodes.getLength(); i++) {
int i=0;
StringTokenizer st = new StringTokenizer(xpath_String,"|");
while (st.hasMoreElements()) {
String val = (String) st.nextElement();
if(hm().containsKey(val)){
System.out.println("Node value is: "+nodes.item(i).getNodeName());
nodes.item(i).setTextContent(hm().get(val).toString());
i++;
}
}
//}
//write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
// generating the output file name
StreamResult finalResult = new StreamResult(new File("newfxml.xml"));
transformer.transform(source, finalResult);
//making a string for the dom
StringWriter writer = new StringWriter();
StreamResult stResult = new StreamResult(writer);
transformer.transform(source, stResult);
Ici, j'ai un modèle fixe et je une carte. à partir de la carte, j'obtiens le xpath et ses valeurs correspondantes. Cela ne vaut que jusqu'à ce qu'aucun des noeuds du template xml ne se répète. Donc, je me demandais s'il y avait un moyen que je peux itérer tout le morceau de nœud xml quand j'obtiens un composant reproductible. Y a-t-il une solution comme celle-ci? Ou je dois changer de façon que j'ai l'intention de procéder ??
Publiez un exemple de votre fichier XML. Alors dis-nous ce que tu as essayé. Alors dites-nous où vous êtes-vous coincé. Alors dites-nous ce que vous voulez vraiment, par exemple. – darioo
Avez-vous un XSD? Si oui, vous pouvez utiliser quelque chose comme XMLBeans. – saugata
non je n'ai pas XSD .. – sanjay