如何解析属性值中包含特殊字符的xml文件到java.parser不接受.how替换特殊字符

时间:2012-09-22 07:18:34

标签: .net sql xml tsql

我正在尝试使用DOM或SAX解析java中的xml文件。

问题在于解析时,如果我的xml包含像< > "那样的特殊字符,那么解析器会抛出ParserException

例如xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<abc>
     <check name="bike" value="apache<is good model">
     <check name="car" value="tata "sumo">
</abc>

在此示例中,xml元素<check>具有属性值,它包含<"

解析器将其视为无效并抛出解析器异常。

现在我的问题是在将xml文件解析为解析器之前,检测xml文件属性值中的特殊字符并且必须用符号替换。

例如:

如果xml包含<

<check name="bike" value="apache<is good model">

替换为空格

<check name="bike" value="apache is good model">

请给我建议。它可以用什么方法完成...我们可以使用XSD来做...提前谢谢。

2 个答案:

答案 0 :(得分:0)

<>是XML中的预定义实体,不能作为属性或值的一部分接受。有关XML和&amp ;;的列表,请参阅HTML字符会检查wiki页面

如果您希望将<用作XML值,请改用CDATA标记

<element  attr="elemAttr">
<value>
<![CDATA[< allowed here]]>
</value>
</element>

答案 1 :(得分:0)

如果您可以控制输入,请将有问题的<字符替换为解析器应接受的&amp;lt;字符。

如果您无法控制输入,请弄清楚如何捕获异常。