web-dev-qa-db-fra.com

Comment convertir une chaîne en objet Document DOM en Java?

J'ai un cas comme obtenir un XML et convertir les éléments XML en objet de document et obtenir les valeurs et les attributs des éléments que j'ai déjà créés

Voici le morceau de code que j'ai essayé de convertir la chaîne en objet de document DOM

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

Mais ce cas n'est valable que pour les éléments sans attributs que pouvons-nous faire si le

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

nous utilisons des guillemets doubles pour les valeurs d'attribut "valeur". Le compilateur affiche une erreur

Suggérez-moi s'il y a un encodeur et un décodeur xml pour gérer ces scénarios ??

19
Pradeepraj

tu peux essayer

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

Document doc = db.parse(is);

référez ceci http://www.Java2s.com/Code/Java/XML/ParseanXMLstringUsingDOMandaStringReader.htm

48
Hemant Metalia

Soit échapper aux guillemets doubles avec \

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

ou utilisez des guillemets simples à la place

String xmlString = "<element attribname='value' attribname1='value1'> pcdata</element>"
6
artbristol
     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();  
        } 
  }
2
Maverick
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.

cela fonctionne bien pour moi même si la structure XML est complexe.

Et assurez-vous que votre xmlString est valide pour XML, notez que le caractère d'échappement doit être ajouté "\" à l'avant.

Le problème principal peut ne pas provenir des attributs.

2
OOD Waterball