het instellen van attribuut/knoop in XML in java

Hier is mijn XML:


   
     Blah Test 

Ik zou graag willen toevoegen, zodat mijn uiteindelijke xml zou willen:


   
     Blah Test New value 

Ik kan het knooppunt in XPath ophalen met //A en ik weet niet zeker hoe ik de waarden moet toevoegen of bewerken zodra ik het knooppunt heb.

3
Ik gebruik DOM. Ik gebruik XSLT niet.
toegevoegd de auteur ed1t, de bron
Er zijn veel vergelijkbare vragen, kijk alsjeblieft eerst rond. Welke technologieën gebruikt u en hoe wordt de waarde voor het nieuwe knooppunt geleverd? Dit is nogal belangrijk om te weten. Gebruikt u SAX, StAX, DOM, JDOM ...? Zijn uw parsing, transformerend met behulp van XSLT, bindend met JAXB?
toegevoegd de auteur G_H, de bron

3 antwoord

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
StringReader xml = new StringReader("BlahTest");
Document doc = db.parse(new InputSource(xml));
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//A");
Element element = doc.createElement("D");
element.setTextContent("new value");
NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for(int i = 0; i < nodes.getLength(); i++) {  
    Node node = nodes.item(i);
    node.appendChild(element);
}
4
toegevoegd

Naast het rechtstreeks gebruiken van de DOM API, kunt u ook jOOX , een eenvoudige wrapperbibliotheek voor DOM, gebruiken , die ik heb gemaakt:

// With css-style selectors
$(document).find("A").append("New value");

// With XPath
$(document).xpath("//A").append("New value");
0
toegevoegd

Controleer deze methode van de interface Node van DOM. Element verlengt dit, dus u moet eerst het element verkrijgen voor A . Gebruik deze methode op uw Document -instantie, of een andere geschikte methode uit de klasse, om het gewenste D -element te maken en de inhoud ervan in te stellen.

0
toegevoegd