[英]writing “<” and “>” to a xml file instead of < and > in java
我必须在xml文件中写几行,该文件应包含<和>符号,作为标签值的一部分。 我将它们设置为带有<和>符号以及一些文本的字符串,并且在通过jaxb编组后,所创建的xml具有; lt; 和; gt; 代替<和>符号。 我尝试使用转义字符以及ascii 60和62值来使它们成为<和>,但没有用。 任何人都可以为此提出一些解决方案。
...创建的xml具有; lt; 和; gt; 代替
<
和>
符号...
我想你的意思是<
和>
。 没错 这就是您以XML文本编写<
和>
(尽管也可以使用>
字面意义,请参见下文)。 它们被称为命名角色实体。
这个:
<foo>6 < 7</foo>
...定义其中包含内容“ 6 <7”的XML元素。
这个:
<foo>6 < 7</foo>
是无法解析的无效XML。
字符实体的替代方法是使用CDATA部分:
<foo><![CDATA[6 < 7]]></foo>
<![CDATA[
和]]>
之间的所有内容均被视为原始文本,而不是XML。 但是请注意,生成的XML DOM略有不同。 foo
元素的值是CDATA节,其值依次为"6 < 7"
。 因此,它不太直接。 当您使用字符实体时, foo
的值是"6 < 7"
(没有任何插入位)。
从技术上讲,如果愿意,您可以直接在XML中编写>
。 这两行定义的是完全相同的内容:
<foo>7 > 6</foo>
<foo>7 > 6</foo>
两者都是有效的,并且解析时得到的数据完全相同。 但是通常您会看到第一个而不是第二个。
旁注: &
也必须使用字符实体编写,因为&
是字符实体的开头。 因此,要在文本中包含&
,请使用&
:
<foo>Jones & Cooper Co.</foo>
您也可以这样做:
<xml>
<![CDATA[
<data>sdsjddjdsdjs</data>
]]>
</xml>
如果我们假设el是您的元素,那么:从lxml import etree
el.text = etree.CDATA('a string')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.