2016-04-05 21 views
2

Ich habe Spalte Daten im XML-Format mit Base64-Verschlüsselung. Nun, wie die Werte lesenWie lesen und dekodieren Base64-Daten aus XML in Java

<?xml version="1.0" encoding="UTF-8"?> 
<event id="370e7324-3-85ec-63dac16aacb6"> 
<properties>  
<property enc="BASE64" name="DAV:name" value="Q2FsZWmnmewqzRlYXI="/> 
</properties> 
</event> 

und mein Java-Code ist

public Object readingSqlResultedRecord(ResultSet result){ 
try { 
Query q="select xml from empdata"; 
String xml = result.getString(1); 
System.out.println("----xml----"+xml); 
}catch (SQLException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
} 

möchte ich diesen Wert Wert lesen = "Q2FsZWmnmewqzRlYXI =" ist es möglich?

+1

Es klingt wie das, was du bist * wirklich * fragen ist: „Wie analysieren wir XML und ein Attribut aus es in Java abrufen?“ Der base64-Teil ist danach einfach. Was haben Sie bisher in Ihrer Forschung zum XML-Parsing gefunden? –

+0

@ Jon Skeet .. ja. Ich habe nicht angefangen zu analysieren, weil ich dieses Problem zum ersten Mal habe, also weiß ich nicht, wie ich es anfangen soll. – Sri

+0

Nun, wenn Sie neu sind, um XML in Java zu analysieren, würde ich vorschlagen, mit einem Tutorial zu beginnen. Es gibt viele Möglichkeiten, XML in Java zu parsen - was in mancher Hinsicht nützlich ist, in anderen jedoch nicht. Vielleicht möchten Sie mit https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html beginnen - oder werfen Sie einen Blick auf jdom (http://jdom.org/) –

Antwort

0

Sie erhalten "xml" als Zeichenfolge, die Sie in ein DOM-Objekt konvertieren müssen, um es leicht zu parsen.

Hier sind einige der Links, die Sie könnte helfen, zu tun, was Sie wollen,

http://www.journaldev.com/1237/java-convert-string-to-xml-document-and-xml-document-to-string

http://www.coderanch.com/t/512978/java/java/convert-string-xml-file-java

java convert string to xml and parse node

kurz gesagt,

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 

builder = factory.newDocumentBuilder(); 
Document doc = builder.parse(new InputSource(new StringReader(xmlStr))); 
return doc; 
0

Verwenden Sie JAXB für die XML-Analyse.

@XmlRootElement(name="event") 
@XmlAccessorType(value=XmlAccessType.FIELD) 
public class Event 
{ 
    @XmlAttribute(name="id") 
    private String id; 
    @XmlElement(name="properties") 
    private Event.Properties properties; 

    @XmlRootElement(name="properties") 
    @XmlAccessorType(value=XmlAccessType.FIELD) 
    public static class Properties 
    { 
     @XmlElement(name="property") 
     private Event.Property property; 
    } 

    @XmlRootElement(name="property") 
    @XmlAccessorType(value=XmlAccessType.FIELD) 
    public static class Property 
    { 
     @XmlAttribute(name="enc") 
     private String enc; 
     @XmlAttribute(name="name") 
     private String name; 
     @XmlAttribute(name="value") 
     private String value; 
    } 
} 

Erstellen Sie entsprechende Getter und Setter. Dann

JAXBContext context = JAXBContext.newInstance(Event.class); 
Unmarshaller unmarshaller = context.createUnmarshaller(); 
//All the xml data will be mapped into JAXB class instance 
Event event = (Event) unmarshaller.unmarshal("xml_file_path"); 
//get the data 
String value = event.getProperties().getProperty().getValue(); 
String decodedValue = DatatypeConverter.parseBase64Binary(value); 
+0

Was ist das? * xml_file_path ** in ** Ereignis event = (Ereignis) unmarshaller.unmarshal ("xml_file_path"); ** – Sri

+0

Der absolute oder relative XML-Dateipfad. (zB .marmarshaller.unmarshal ("/ data/event.xml"). – additionster

+0

** XML ** Daten sind in XML-Objekt dh, ** String xml = result.getString (1); **. So kann ich * * xml ** Objekt ist korrekt? – Sri