Vyhledání a nahrazení elementu v XML přes xPath – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vyhledání a nahrazení elementu v XML přes xPath – Java – Fórum – Programujte.comVyhledání a nahrazení elementu v XML přes xPath – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Standa
~ Anonymní uživatel
122 příspěvků
3. 10. 2014   #1
-
0
-

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>
Nahlásit jako SPAM
IP: 80.90.135.–
Reklama
Reklama
P
~ Anonymní uživatel
193 příspěvků
3. 10. 2014   #2
-
0
-

Pouzij na to transformacni sablonu XSLT.

Nahlásit jako SPAM
IP: 85.93.116.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý