我有以下代码:
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);
如何让它解析String中包含的XML而不是文件?
答案 0 :(得分:452)
我的代码库中有这个功能,这对你有用。
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);
}
答案 1 :(得分:16)
一种方法是使用带有InputSource而不是文件
的解析版本可以从Reader对象构造SAX InputSource。一个Reader对象是StringReader
类似
parse(new InputSource(new StringReader(myString))) may work.
答案 2 :(得分:5)
javadocs表明parse方法已经过载。
使用字符串XML创建StringStream或InputSource,您应该设置它。
答案 3 :(得分:4)
将字符串转换为InputStream并将其传递给DocumentBuilder
final InputStream stream = new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
builder.parse(stream);
编辑
为了回应 bendin 关于编码的评论,请参阅 shsteimer 对此问题的回答。
答案 4 :(得分:2)
我正在使用这种方法
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;
}
答案 5 :(得分:0)
您可以使用GitHub上提供的Scilca XML Progession软件包。
XMLIterator xi = new VirtualXML.XMLIterator("<xml />");
XMLReader xr = new XMLReader(xi);
Document d = xr.parseDocument();
答案 6 :(得分:0)
只需输入
this.file = File("your xml file path")
this.document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file)