我的应用程序正在尝试解析 XML 并抛出以下异常,
在文档的元素内容中发现了无效的 XML 字符 (Unicode: 0x52)。
我 100% 确定 XML 是有效的。但我仍然不知道为什么我会得到这个例外。
关于什么可能导致此异常的任何想法?
我用来读取 xml 文件的代码是:
String policyFile = filename;
try {
String overRide = System.getProperty("TEST_POLICY_FILE");
if (overRide != null) {
policyFile = overRide;
}
// URL urlToPolicyFile = new URL(policyFile);
// InputStream is = urlToPolicyFile.openStream();
//InputStream is = getClass().getClassLoader().getResourceAsStream(policyFile);
// get XML Parser instance
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setIgnoringComments(true);
factory.setValidating(false);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(VacEntityResolver.getInstance());
InputSource inputSource = new InputSource(policyFile);
// parse input file
Document policyDocument = builder.parse(inputSource);
Builder policyBuilder = new Builder();
// load decl-policies file into cache
visitDeclarativePolicies(policyDocument, policyBuilder);
m_myPolicyCache = policyBuilder.getPolicyCache();
} catch (SAXException e) {
throw new InvalidPolicyFileException(policyFile);
} catch (ParserConfigurationException e) {
throw new InvalidPolicyFileException(policyFile);
} catch (IOException e) {
throw new InvalidPolicyFileException(policyFile);
}
线,
Document policyDocument = builder.parse(inputSource);
是抛出错误的那个
关于这个问题的一个有趣的事实是,它只发生在生产环境中。同一个 Xml 文件在我的开发环境和测试环境中都没有产生任何问题。抱歉没有分享文件。这是一个文件,我不应该分享。但是相同的输入文件在我的开发环境中没有产生任何问题。
这个问题对我来说似乎很奇怪,因为它为字符 0x52 即“R”抛出异常。