Réponses:
J'ai cette fonction dans ma base de code, cela devrait fonctionner pour vous.
public static Document loadXMLFromString(String xml) throws Exception
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xml));
return builder.parse(is);
}
voir aussi cette question similaire
import org.xml.sax.InputSource;
les javadocs montrent que la méthode d'analyse est surchargée.
Créez un StringStream ou InputSource en utilisant votre chaîne XML et vous devez être défini.
Convertissez la chaîne en InputStream et passez-la à DocumentBuilder
final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);
EDIT
En réponse au commentaire de bendin concernant l'encodage, voir la réponse de shsteimer à cette question.
J'utilise cette méthode
public Document parseXmlFromString(String xmlString){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputStream inputStream = new ByteArrayInputStream(xmlString.getBytes());
org.w3c.dom.Document document = builder.parse(inputStream);
return document;
}
Vous pouvez utiliser le package Scilca XML Progession disponible sur GitHub.
XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
javax.xml.parsers.DocumentBuilder.parse(string)
suppose que la chaîne est un uri (terrible ...)