在Java中,如何将XML解析为String而不是文件?

时间:2009-02-18 17:56:29

标签: java xml string file parsing

我有以下代码:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlFile);

如何让它解析String中包含的XML而不是文件?

7 个答案:

答案 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);
}

另见this similar question

答案 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)