Anonymní profil Standa – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Standa – Programujte.comAnonymní profil Standa – Programujte.com

 

Příspěvky odeslané z IP adresy 80.90.135.–

Standa
Java › Vyhledání a nahrazení elemen…
3. 10. 2014   #194483

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>
Kaktus410
Java › Kontrola prográmku v JAVE a…
18. 7. 2014   #192269

#3 p3can
Ahoj, díky za rozebrání prográmku, hned jak budu mít chvilku, tak připomínky zapracuji a odstraním chyby, které jsem neviděl. JAVU se teprve učím asi +/- 3 měsíce, ale asi jsem jí ještě moc dostatečně nepochopil.

Kaktus410
Java › Kontrola prográmku v JAVE a…
18. 7. 2014   #192268

#2 Kit
Chybička se vloudila. Dotaz jsem vložil i do diskuze na itnetworku odkud jsem čerpal informace k jave.

Řádky:

Banker novyKlient = new Banker();

tady jsem chtěl volat další třídu, kde mám metody jako vytvořit nového klienta nebo založit nový účet atd...

 

Kaktus410
Java › Kontrola prográmku v JAVE a…
18. 7. 2014   #192262

Ahoj,

snažín se naučit JAVU dle článků uvedených zde na ITNETWORK a rozhodl jsem se, že si jen tak pro sebe vytvořím program, který bude simulovat klasické bankovní operace, abych se naučil programovat v JAVE.
Potřeboval bych vědět, jestli jsem začal dobře nebo špatně, na co si mám dávat pozor a případně mi poradit s odstranění chyb, které jsem si do toho prográmku již zavedl.
Snažím se vytvořit něco, co nenajdu na internetu. Jinak ten můj prográmek je propojen s databází Oracle. Jak mám vytvořené propojení s db, tak sem zatím dávat nebudu, teda pokud nebudu o to požádán.
Tak jak mám ten program vytvořený, tam mi i funguje, ale potřebuji aspoň tyto dvě třídy zkontrolovat od zkušených javystů.
Předem moc děkuji.

třída Banka s metodou main:

package banka;

 import java.sql.SQLException;
 import java.text.ParseException;
 import java.util.Scanner;

 public class Banka {

     public static void main(String[] args) throws SQLException, ParseException {
         Scanner sc = new Scanner(System.in, "UTF-8");

         System.out.println("Vitejte v bance Kaktus Banka.");
         System.out.println("Jste klient nebo bankéř? 1 - klient, 2 - bankéř:");
         int volba = Integer.parseInt(sc.nextLine());
         switch (volba)
         {
             case 1:
                 Klient klienti = new Klient();
                 klienti.Klienti();
                 break;
             case 2:
                 Banker banker = new Banker();
                 banker.operaceBankere();
                 break;
             default:
                 System.out.println("Nebyla zadána správná volba!");
                 break;
         }
     }//end main
 }//end Banka

třída Banker:

package banka;

 import java.sql.SQLException;
 import java.util.Scanner;
 import java.util.logging.Level;
 import java.util.logging.Logger;

 
 public class Banker {
     private String jmeno;
     private String prijmeni;
     private String login;
     private String heslo;
     private String osloveni;
     private String datumZalozeni;
     private String sporiciUcet;
     private String debet;
     private int castkaDebetu;
     private int cisloBUctu;
     private int opak = 0;
     private Scanner sc = new Scanner(System.in, "UTF-8");


     public void operaceBankere() throws SQLException {
         Scanner sc = new Scanner(System.in, "UTF-8");

         System.out.println("Zadej operaci, kterou chcete provést:");
         System.out.println("1 - Aktivace nového klienta");
         System.out.println("2 - Založit nový účet");
         System.out.println("3 - Založit nový spořící účet");
         System.out.println("4 - Zrušit klienta");
         System.out.println("5 - Zrušit běžný účet");
         System.out.println("6 - Zrušit spořící účet");
         int volba = Integer.parseInt(sc.nextLine());
         switch (volba)
         {
             case 1:
                 Banker novyKlient = new Banker();
                 novyKlient.zalozitNovehoKlienta();
                 break;
             case 2:
                 Banker novyBUcet = new Banker();
                 novyBUcet.zalozitNovyBeznyUcet();
                 break;
             case 3:
                 Banker novySUcet = new Banker();
                 novySUcet.zalozitNovySporiciUcet();
                 break;
             case 4:
                 System.out.println("Zrušit klienta");
                 break;
             case 5:
                 System.out.println("Zrušit účet");
                 break;
             case 6:
                 System.out.println("Zrušit spořící účet");
                 break;
             default:
                 System.out.println("Nebyla zadána správná volba!");
                 break;
         }
     }

     public void zalozitNovehoKlienta() throws SQLException {
         System.out.println("Aktivace nového klienta");
         System.out.println("Zadejte Jméno: ");
         jmeno = sc.nextLine();
         System.out.println("Zadejte Přijmení: ");
         prijmeni = sc.nextLine();

         do
             {
                 System.out.println("Zadejte Login: ");
                 login = sc.nextLine();

                 Connect_to_DB kontrolaLogin = new Connect_to_DB();
                 kontrolaLogin.kontrolaLogin(login);

                 if (kontrolaLogin.getLoginExist() != null)
                 {
                     System.out.println("Login je již registrován, zadejte jej znovu.");
                     opak = 1;
                 }
                 else
                 {
                     System.out.println("Zadejte Heslo: ");
                     heslo = sc.nextLine();
                     System.out.println("Zadejte Oslovení: ");
                     osloveni = sc.nextLine();

                     Connect_to_DB novyKlient = new Connect_to_DB();
                     novyKlient.InsertKlient(jmeno,prijmeni,login,heslo,osloveni);

                     Connect_to_DB kontrolaKlienta = new Connect_to_DB();
                     kontrolaKlienta.existenceKlienta(login, heslo);

                     if (kontrolaKlienta.getExistenceKlienta() == null)
                     {
                         System.out.println("Klient neexistuje, zadejte login a heslo znovu.");
                     }
                     else
                     {
                         System.out.println("Aktivovat debet? [ano/ne]");
                         debet = sc.nextLine();

                         Debet aktivaceDebetu = new Debet();
                         if ("Ano".equals(debet))
                         {
                             castkaDebetu = aktivaceDebetu.aktivaceDebetu();
                         }
                         else
                         {
                             castkaDebetu = 0;
                         }

                         Connect_to_DB novyBUcet = new Connect_to_DB();
                         novyBUcet.InsertBUcet(kontrolaKlienta.getExistenceKlienta(), debet, castkaDebetu, null);

                     }
                     opak = 2;
                 }
             }
         while (opak == 1);
     }
 }

 

 

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