我必须在xml文件中写几行,该文件应该包含<和>符号作为标记值的一部分。 我将它们设置在一个字符串中,该字符串包含一些文本以及<和>符号,并且在通过jaxb编组之后,创建的xml具有; lt;和;;而不是<和>符号。我尝试使用转义字符和ascii 60和62值将它们作为<和>但没有工作。任何人都可以为此提出一些解决方案。
答案 0 :(得分:3)
...创建的xml有; lt;和;;而不是
<
和>
符号...
我认为您的意思是<
和>
。这是对的。这就是你在XML文本中写<
和>
的方式(尽管你也允许在字面上使用>
,见下文)。他们称之为命名字符实体。
此:
<foo>6 < 7</foo>
...定义一个内容为&#34; 6&lt; 7&#34;在它。
此:
<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>
答案 1 :(得分:0)
你也可以这样做:
<xml>
<![CDATA[
<data>sdsjddjdsdjs</data>
]]>
</xml>
答案 2 :(得分:0)
如果我们假设el是你的元素那么: 来自lxml import etree
el.text = etree.CDATA('a string')