代码之家  ›  专栏  ›  技术社区  ›  Mike Sickler

在Java XML属性文件中表示标记:cDATA与转义标记

  •  2
  • Mike Sickler  · 技术社区  · 15 年前

    我正在用XML格式读取和编写Java属性文件。许多属性值都嵌入了HTML,开发人员将其包装在 [[CDATA 这样的元素:

    <entry key="foo"><![CDATA[
        <b>bar</b>
    ]]></entry>
    

    但是,当我使用JavaAPI加载这些属性后再将它们写入XML时,它不会将这些条目包装在CDATA元素中,而是转义这些标记,如:

    <entry key="foo">&lt;b&gt;bar&lt;/b&gt;</entry>
    

    这两种格式等效吗?我是否通过用转义标记替换CDATA来引入任何潜在的问题?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Ondra Žižka David Lilljegren    15 年前

    不是等价的,而是通过调用 getText() 是一样的。

    不过,我建议你放弃 Properties 支持真正的XML JAXB -太棒了,你会喜欢的。

    没有找到任何好的,所以至少这些:

    对象->XML: here

    Sun的详细教程: http://java.sun.com/webservices/docs/2.0/tutorial/doc/JAXBUsing.html

        2
  •  1
  •   Sarah Happy    15 年前

    当文件被加载到属性对象的内存中时,您所显示的两种格式之间没有区别,如Ondra_½i_CDATA节是一种转义文本块的方法,而不是转义其中的每个字符。

    我将自己考虑非XML属性文件格式,您将继续看到原始文件中的标记,但换行符需要转义。

        3
  •  0
  •   Suraj Chandran    15 年前

    是的,根据数据的使用方式,您可能会引发一些问题。

    例如,如果在HTML页面中使用它, A<br>B 将打印为

    A
    
    B
    

    但是 A&lt;br&gt;B 将显示为

    A<br>B