2011-12-13 9 views
12

Ho un caso come ottenere un XML e convertire gli elementi XML in oggetto documento e ottenere i valori degli elementi e gli attributi che sono stati creati giàCome convertire la stringa in oggetto Document DOM in java?

Ecco il pezzo di codice che ho provato a convertire la stringa in DOM documento oggetto

String xmlString = " <r><e>d</e></r>"; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 
org.w3c.dom.Document document = builder.parse(new InputSource(new StringReader(xmlString)));  
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(document); 
StreamResult result = new StreamResult(new StringWriter()); 
transformer.transform(source, result); 
String str1 = result.getWriter().toString(); 
System.out.println(str1); 

Ma questo caso è valida solo per gli elementi senza attributi cosa possiamo fare se il

String xmlString = "<element attribname="value" attribname1="value1"> pcdata</element>" 

stiamo utilizzando i doppi apici per l'att ributare valori "valore". Il compilatore mostra l'errore

Suggerisco se esiste un codificatore e decodificatore xml per gestire questi scenari ??

+0

Dovrebbe andare bene con gli attributi - quale comportamento stai vedendo? –

risposta

5

O sfuggire le virgolette doppie con \

String xmlString = "<element attribname=\"value\" attribname1=\"value1\"> pcdata</element>" 

o utilizzare le virgolette singole invece

String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>" 
2
 public static void main(String[] args) { 
    final String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"+ 
          "<Emp id=\"1\"><name>Pankaj</name><age>25</age>\n"+ 
          "<role>Developer</role><gen>Male</gen></Emp>"; 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder; 
     try 
     { 
      builder = factory.newDocumentBuilder(); 
      Document doc = builder.parse(new InputSource(new StringReader(xmlStr))); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
1
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document document = db.parse(new ByteArrayInputStream(xmlString.getBytes("UTF-8"))); //remove the parameter UTF-8 if you don't want to specify the Encoding type. 

questo funziona bene per me anche se la struttura XML è complessa.

E per favore assicuratevi che il vostro xmlString sia valido per XML, notate che il carattere di escape deve essere aggiunto "\" nella parte anteriore.

Il problema principale potrebbe non venire dagli attributi.

Problemi correlati