【问题标题】:How to parse xml file which has special characters in attribute values to java.parser not accepting .how to replace special character如何将属性值中具有特殊字符的xml文件解析为java.parser不接受.how替换特殊字符
【发布时间】:2012-09-22 07:18:33
【问题描述】:

我正在尝试使用 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 元素 &lt;check&gt; 有一个属性值,它包含 &lt;"

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

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

例如:

如果 xml 包含 &lt;

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

用空格代替

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

请给我一些建议。可以通过什么方法完成...我们可以使用 XSD 来完成...提前谢谢。

【问题讨论】:

    标签: .net sql xml tsql


    【解决方案1】:

    &lt;&gt; 是 XML 中的预定义实体,不能作为属性或值的一部分被接受。有关有效 XML 和 HTML 字符列表的参考,请查看 wiki 页面

    如果您希望使用 &lt; 作为 XML 值,请改用 CDATA 标记

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-06-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多