2016-05-02 12 views
0

Ich muss Schlüsselwerte unter Verwendung : teilen, aber das Problem ist, dass der Wert ein XML ist.Java SPLIT mit Doppelpunkt: und xml

("User1":"<?xml version=\"1.0\"?><presence xmlns=\"urn:ietf:params:xml:ns:pidf\" xmlns:dm=\"urn:ietf:params:xml:ns:pidf:data-model\" xmlns:rpid=\"urn:ietf:params:xml:ns:pidf:rpid\" xmlns:c=\"urn:ietf:params:xml:ns:pidf:cipid\" entity=\"[email protected]\"></presence>") 

Was ich will ist eine Karte mit Schlüssel als User1 und Wert als XML.

Ich versuchte input.split(":"); und dies funktioniert nicht, da es alles in den XML-Namespaces aufteilt. Ich habe versucht input.split("\\\":\""); das tut nichts.

Vielleicht kann einige Regex helfen, aber ich bekomme nicht, was genau es sein könnte.

+1

So etwas, das nur 2 mal spaltet? http://stackoverflow.com/questions/32349245/split-a-string-only-two-times – Tunaki

Antwort

1

Falls Ihr Schlüssel nicht Doppelpunkte enthält, können Sie Folgendes versuchen:

public static void main(String[] args) { 
    final String str = "\"User1\":\"<?xml version=\"1.0\"?><presence xmlns=\"urn:ietf:params:xml:ns:pidf\" xmlns:dm=\"urn:ietf:params:xml:ns:pidf:data-model\" xmlns:rpid=\"urn:ietf:params:xml:ns:pidf:rpid\" xmlns:c=\"urn:ietf:params:xml:ns:pidf:cipid\" entity=\"[email protected]\"></presence>"; 
    final int firstIndexOfColon = str.indexOf(':'); 
    if(firstIndexOfColon >= 0) { 
     final String key = str.substring(0, firstIndexOfColon); 
     final String val = ((firstIndexOfColon + 1) < str.length()) ? str.substring(1 + firstIndexOfColon) : "Empty value string"; 
     System.out.println(key); 
     System.out.println(val); 
    } else { 
     System.out.println("No delimiter found"); 
    } 
} 

Andernfalls werden Sie können die Syntax genauer gesagt, so ein regex hergestellt werden angeben.

+0

Ehrfürchtig. einfache Lösung. – Jardanian