Ahoj/dobrý den,
potřeboval bych poradit jak v XML, přes xPath najít konkrétní element a nahradit jej jiným elementem.
V XML mám 3 elementy <w:sdt> a každý element obsahuje potomky <w:r> ve kterém je další element <w:t>.
V elementu <w:sdt> je element s atributem <w:tag w:val="P{1}"/> a podle hodnoty tohoto atributu potřebuji najít ten správný <w:sdt> element.
Dále v elementu <w:r> potřebuji nějak změnit hodnotu v elementu <w:t>. Nějak přepsat hodnotu P1 na něco jiného. Jakmile dojde k přepsání hodnoty v elemetu <w:t>, tak nahradit celý element <w:sdt> za ten element <w:r> i s podlemenenty.
Má zatím vytvořenou smyčku na vyhledání všech elementů <w:sdt>, ale dál se nemohu hnout z místa.
Můžete mi pls někdo poradit? Předem moc děkuji.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setValidating(false);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new FileInputStream(new File("document.xml")));
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
String expression;
NodeList nodeList;
String hodnotaTagu = null;
expression = "//*[name()='w:sdt']";
nodeList = (NodeList) xpath.evaluate(expression, doc, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
System.out.println("w:sdt = " + nodeList.item(i).getNodeName());
}
zde je část XML s celám elementem <w:sdt>:
<w:sdt>
<w:sdtPr>
<w:rPr>
<w:b/>
</w:rPr>
<w:tag w:val="P{1}"/>
<w:id w:val="-1130393001"/>
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_1082065158"/>
</w:placeholder>
<w:text/>
</w:sdtPr>
<w:sdtEndPr/>
<w:sdtContent>
<w:r w:rsidR="00EE5C6A" w:rsidRPr="00DD548A">
<w:rPr>
<w:b/>
</w:rPr>
<w:t>P1</w:t>
</w:r>
</w:sdtContent>
</w:sdt>