Antworten:
Ich habe diese Funktion in meiner Codebasis, dies sollte für Sie funktionieren.
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);
}
siehe auch diese ähnliche Frage
import org.xml.sax.InputSource;
Eine Möglichkeit besteht darin, die Analyseversion zu verwenden, die eine InputSource anstelle einer Datei verwendet
Eine SAX InputSource kann aus einem Reader-Objekt erstellt werden. Ein Reader-Objekt ist der StringReader
Also so etwas wie
parse(new InputSource(new StringReader(myString))) may work.
Javadocs zeigen, dass die Analysemethode überladen ist.
Erstellen Sie einen StringStream oder eine InputSource mit Ihrem String-XML, und Sie sollten festgelegt sein.
Konvertieren Sie die Zeichenfolge in einen InputStream und übergeben Sie sie an DocumentBuilder
final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);
EDIT
Als Antwort auf bendin ‚s Kommentar bezüglich Codierung finden shsteimer ‘ s Antwort auf diese Frage.
Ich benutze diese Methode
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;
}
Sie können das bei GitHub verfügbare Scilca XML Progession-Paket verwenden.
XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
javax.xml.parsers.DocumentBuilder.parse(string)
davon ausgegangen wird , dass die Saite ein Uri ist (schrecklich ...)