我正在使用SAX(javax.xml.parsers.SAXParser;
)阅读XML。在那个XML中,在子节点值中有一些特殊的字符,如(&,<,>,“,”)。所以,到那时SAX成功读取了XML,但是在这一点上它会抛出一个{ {1}}。
例如,在下面的示例XML中,SAX读取成功的节点值。但由于 Name 参数的值在 < 中,它会抛出此org.xml.sax.SAXParseException
。
org.xml.sax.SAXParseException
我无法确定手头包含这些特殊字符的节点。(它是dyanamic。)所以,我想做的是,用SAX读取XML,忽略包含这些特殊字符的节点。 ,如果可以使用SAX读取XML,跳过传递org.xml.sax.SAXParseException的节点,我想我可以这样做。
这是可能的,如果是,如何?
注意:我不能简单地用<Parent>
<child1>
LS-23541723
</child1>
<child2 id="2" Name="T-Shirt And Denim - T<D" Rate="500.00">
</child2>
<child3>
<![CDATA[This is the child 2]]>
</child3>
<child4>
<![CDATA[This is the child 4]]>
</child4>
</Parent>
之类的实体引用来替换它们,因为有些时候XML节点也会与&
,<
一起提交(作为{{ 1}})。因此,在开始使用SAX读取它之前,我将所有实体引用替换为字符引用。(>
)等)
答案 0 :(得分:0)
我认为SAX不能解决这个问题。 XML必须格式良好。因此,在将文本提交到SAX之前,您必须进行一系列替换。查找不在正确位置的任何'
,"
或<
。 "
之间的"
,'
与'
之间的<
,不属于开始代码或结束代码。这应该是可行的。这是第一次传球后的第二次传球,用同等对手替换<
和>
。
理想情况下,您还应该注意评论,CDATA部分等......以确保它们格式正确。