有没有方便的方法来检查xml文件是否包含无效字符

时间:2017-03-18 05:50:16

标签: java xml

我正在编写一个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

1 个答案:

答案 0 :(得分:0)

你有允许角色的白名单吗?这是一种模式:

  1. 对于每个流式角色,如果未列入白名单,请将其替换为空。
  2. 询问过滤后的文件内容是否与之前相同(差异模式)
  3. 如果两个文件中的内容不相等,则源文件包含无效字符。