2011-12-13 19 views
12

Tengo un caso como obtener un XML y convertir los elementos XML a documento objeto y obtener los valores de los elementos y los atributos que he creado yaCómo convertir String a DOM ¿Objeto de documento en Java?

Aquí está el fragmento de código que he intentado convertir la cadena a DOM objeto

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); 

documento Pero este caso es válida sólo para elementos sin los atributos ¿qué podemos hacer si el

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

estamos utilizando comillas dobles para el att valores de homenaje "valor". El compilador muestra el error

¿Me sugiere si hay algún codificador y decodificador xml para manejar este escenario?

+0

Debería estar bien con los atributos: ¿qué comportamiento estás viendo? –

Respuesta

5

Cualquiera de escapar de las comillas dobles con \

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

o utilizar comillas simples en lugar

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. 

esto funciona bien para mí a pesar de que la estructura XML es compleja.

Y asegúrese de que su xmlString sea válido para XML, observe que el carácter de escape debe agregarse "\" al frente.

El problema principal podría no provenir de los atributos.