在Java中验证XML字符串

6
String strXML ="<?xml version='1.0' encoding='UTF-8' standalone='yes'?><custDtl><name>abc</name><mobNo>9876543210</mobNo></custDtl>"

如何验证字符串是否为合适的XML字符串。

1
可能是重复的问题,来源于https://dev59.com/mmw15IYBdhLWcg3w1_UN。 - Erwan C.
当然,需要使用一个验证 XML 解析器。 - duffymo
我能够使用SAXParserFactory和SAXParserException验证XML文件,但无法解析字符串XML。 - user2019331
我也尝试了使用JAXB UnMarshaller来解析字符串XML,但它抛出了SAXParserException,我无法处理。 - user2019331
验证字符串并不等同于验证文件,也不是重复的。 - Adam Eberbach
2个回答

6
你只需要基于XML字符串打开一个 InputStream 并将其传递给SAX解析器即可:
try {
    String strXML ="<?xml version='1.0' encoding='UTF-8' standalone='yes'?><custDtl><name>abc</name><mobNo>9876543210</mobNo></custDtl>";
    SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
    InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
    saxParser.parse(stream, ...);
} catch (SAXException e) {
    // not valid XML String
}

刚才只需要添加SAX处理程序部分。谢谢。 - user2019331

1
public static boolean isXMLValid(String string) {
    try {
        SAXParserFactory.newInstance().newSAXParser().getXMLReader().parse(new InputSource(new StringReader(string)));
        return true;
    } catch (ParserConfigurationException | SAXException | IOException ex) {
        return false;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接