2011-12-13 23 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.

Cuestiones relacionadas