Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用无效字符分析XML_Java_Xml Parsing - Fatal编程技术网

Java 使用无效字符分析XML

Java 使用无效字符分析XML,java,xml-parsing,Java,Xml Parsing,我有一个XML文件,其中包含一些无效字符(XML 1.0不支持字符)。 我想解析该文件,但XML包含无效字符,这是一个异常。 是否有任何可能的方法来解析带有无效字符的XML。或者跳过包含无效字符的节点属性。一种可能的解决方法是将其作为字符串加载,并将无效字符替换为有效字符或标记,以便您知道它在那里。然后正常解析。一种可能的解决方法是将其作为字符串加载,并将无效字符替换为有效字符或标记,以便您知道它在那里。然后正常解析。那么您的意思是在属性中有字符&、(“或”),您可以编写自己的InputStre

我有一个XML文件,其中包含一些无效字符(XML 1.0不支持字符)。 我想解析该文件,但XML包含无效字符,这是一个异常。
是否有任何可能的方法来解析带有无效字符的XML。或者跳过包含无效字符的节点属性。

一种可能的解决方法是将其作为字符串加载,并将无效字符替换为有效字符或标记,以便您知道它在那里。然后正常解析。

一种可能的解决方法是将其作为字符串加载,并将无效字符替换为有效字符或标记,以便您知道它在那里。然后正常解析。

那么您的意思是在属性中有字符&、<、>(“或”),您可以编写自己的InputStream装饰器,并将这些“坏”字符转换为转义字符。InputStream接收此无效数据,并返回有效数据供下一个处理阶段使用:

InputStream yourFancyIllegalCharConverter = new YourFancyIllegalCharConverter( realInputStream );
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader( yourFancyIllegalCharConverter );

你是说属性中有字符&、<、>(“或”)吗?您可以编写自己的InputStream decorator,并将这些“坏”字符转换为转义字符。您的InputStream获取此无效数据并为下一个处理阶段返回有效数据:

InputStream yourFancyIllegalCharConverter = new YourFancyIllegalCharConverter( realInputStream );
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader( yourFancyIllegalCharConverter );

感谢您的回复。XML的大小太大,所以对我来说这是一个复杂的过程。我有一个行号,从中可以得到无效字符,那么,有没有办法修改特定行的内容。感谢您的回复..XML的大小太大,所以对我来说这是一个复杂的过程。我有一个行号,从中可以得到无效字符,那么有没有办法修改特定行的内容。如果您强制解析器使用XML 1.1模式,是否可行,或者将XML prolog更改为将文件声明为1.1 XML(这是一种黑客行为,但也是最容易测试的行为之一)?如果强制解析器使用XML 1.1模式,或者将XML prolog更改为将文件声明为1.1 XML(这是一种黑客行为,但也是最容易测试的行为之一),是否可行?