如何在XML属性值中包含&,<,>等

问题描述

你将不得不逃脱

" to  &quot;
' to  &apos;
< to  &lt;
> to  &gt;
& to  &amp;

用于xml。

解决方法

我想创建一个XML文件,该文件将用于存储Java程序的结构。我能够成功解析Java程序并根据需要创建标签。当我尝试,包括我的标签中的源代码,就会出现问题,因为Java源代码可以使用的实体引用广大和保留的字符,如&<>&。我无法创建有效的XML。

我的XML应该像这样:

<?xml version="1.0"?>
<prg name="prg_name">
  <class name= "class_name>
    <parent>parent class</parent>
      <interface>Interface name</interface>
.
.
.
      <method name= "method_name">
        <statement>the ordinary java statement</statement>
        <if condition="Conditional Expression">
          <statement> true statements </statement>
        </if>
        <else>
          <statement> false statements </statement>
        </else>
        <statement> usual control statements </statement>
 .
 .
 .
      </method>
    </class>
 .
 .
 .
 </prg>

这样,但是问题是条件表达式if或其他语句中有很多&或其他保留的符号,这妨碍了XML的验证。由于所有这些数据(源代码)都是由用户提供的,因此我对此几乎没有控制权。逃避角色将花费大量时间。

我可以使用CDATA来转义元素文本,但不能用于包含条件表达式的属性值。我正在使用Antlr
Java语法来解析Java程序并获取标记的属性和内容。那么,还有其他解决方法吗?