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 ??
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
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>"
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();
}
}
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.