31

I have a case like getting an XML and convert the XML elements to document object and getting the element values and attributes which i have been created already

Here is the piece of code i have tried to convert the string to DOM document object

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

But this case is valid for only elements without attributes what can we do if the

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

we are using Double quotes for the attribute values"value". The compiler is showing error

Suggest me if there any xml encoder and decoder is there to handle this scenarios ??

javanna
  • 59,145
  • 14
  • 144
  • 125
Pradeepraj
  • 423
  • 1
  • 8
  • 15

4 Answers4

62

you can try

DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader("<root><node1></node1></root>"));

Document doc = db.parse(is);

refer this http://www.java2s.com/Code/Java/XML/ParseanXMLstringUsingDOMandaStringReader.htm

Apostolos
  • 10,033
  • 5
  • 24
  • 39
Hemant Metalia
  • 29,730
  • 18
  • 72
  • 91
6
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.

this works well for me even though the XML structure is complex.

And please make sure your xmlString is valid for XML, notice the escape character should be added "\" at the front.

The main problem might not come from the attributes.

OOD Waterball
  • 707
  • 1
  • 11
  • 31
6

Either escape the double quotes with \

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

or use single quotes instead

String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>"
disco crazy
  • 31,313
  • 12
  • 80
  • 83
artbristol
  • 32,010
  • 5
  • 70
  • 103
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();  
        } 
  }
Maverick
  • 626
  • 6
  • 11