我正在编写一个Java程序,它将XML文件解析/解组为Java对象。
此程序采用XML文件,这些文件由某些第三方生成,我无法控制。
获取文件后,程序会使用各自的XSD检查它们是否为无效格式↓
URL schemaFile = this.getClass().getClassLoader().getResource(xsd/some.xsd);
Source xmlFile = new StreamSource(new File(/path/to/xml));
SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(xmlFile);
然后开始使用JAXP单独解析/解组它们。
我面临的问题是,即使经过上述验证,有时我也会收到以下错误。 (上面的验证器似乎没有检查XML是否包含无效字符,只是将输入与其XSD进行比较)
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[xxx,xxx]
有没有方便的方法来检查XML文件是否包含使用编程或某些工具的无效字符?
我使用“sed -n'240,250p'”提取了发生异常的部分(第245行)。 sample.xml
答案 0 :(得分:0)
你有允许角色的白名单吗?这是一种模式:
如果两个文件中的内容不相等,则源文件包含无效字符。