Avatar billede mik28 Seniormester
14. august 2008 - 18:47 Der er 10 kommentarer og
1 løsning

Strengbehandling, pille en bestemt del ud

Hej Eksperter,

Jeg står i en situation hvor jeg har noget xml der skal behandles. Sagen er den at jeg får nogen som ligner det her tilbage

<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml>

Det her xml bruger jeg i forbindelse med noget AJAX. Nu er det bare således at jeg gerne vil undlade at returnerer node3-6 hvis node 2 er F. Hvordan gør jeg lige det?
Avatar billede mik28 Seniormester
14. august 2008 - 18:49 #1
<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml>
Avatar billede mik28 Seniormester
14. august 2008 - 18:49 #2
<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4>
<node5>værdi</node5><node6>værdi</node6></xml>
Avatar billede mik28 Seniormester
14. august 2008 - 18:51 #3
altså så jeg ender op med

<xml><node1>bla</node1><node2>F</node2></xml>
Avatar billede arne_v Ekspert
14. august 2008 - 18:51 #4
Det kan sikker laves med noget indexOf og substring men det paeneste maa vaere:

laes fra Streng til Document
test vaerdien af node2
hvis F slett node3-6
skriv fra Document til String
Avatar billede mik28 Seniormester
14. august 2008 - 19:06 #5
Hvis vi nu siger at

String s="<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3>
<node4>værdi</node4>
<node5>værdi</node5><node6>værdi</node6></xml>";
Avatar billede snoop_one Nybegynder
14. august 2008 - 19:30 #6
Som arne_v skriver kan du godt gøre følgende:
               
                String str = "<xml><node1>bla</node1><node2>F</node2><node3>værdi</node3><node4>værdi</node4>";
        if(str.contains("<node2>F</node2>")){
            Scanner scan = new Scanner(str);
            str = scan.findWithinHorizon("<xml>[^\\Q<node3>\\E]*",0) + "<\\xml>";
        }
Avatar billede arne_v Ekspert
14. august 2008 - 19:47 #7
XML maaden er:

        String s="<xml><node1>bla</node1><node2>T</node2><node3>værdi</node3><node4>værdi</node4><node5>værdi</node5><node6>værdi</node6></xml>";
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document doc = db.parse(new InputSource(new StringReader(s)));
        if(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node2/text()").getNodeValue().equals("F")) {
            doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node3"));
            doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node4"));
            doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node5"));
            doc.getDocumentElement().removeChild(XPathAPI.selectSingleNode(doc.getDocumentElement(), "//xml/node6"));
        }
        OutputFormat fmt = new OutputFormat();
        StringWriter sw = new StringWriter();
        XMLSerializer ser = new XMLSerializer(sw, fmt);
        ser.serialize(doc);
        String s2 = sw.toString();
Avatar billede mik28 Seniormester
15. august 2008 - 06:08 #8
Det ser super ud. Tak
Avatar billede mik28 Seniormester
15. august 2008 - 09:52 #9
Det virker bare som det skal. Takker og bukker
Avatar billede mik28 Seniormester
15. august 2008 - 17:01 #10
Læg endelig et svar arne_v. Det er bare super cool
Avatar billede arne_v Ekspert
15. august 2008 - 17:35 #11
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester