在XML文档中使用特殊字符

时间:2009-04-29 17:26:46

标签: xml

我想知道如何使用字符"
"(LINE FEED)来分隔属性中的某些信息。看下面的例子:

<element attrinfo="info1=109&#xA;info2=108&#xA;info3=107" />

我使用SetAttribute()来设置属性的文本,但是当我保存XML时,attrinfo中的信息看起来像这样:

<element attrinfo="info1=109&amp;#xA;info2=108&amp;#xA;info3=107" />

"&"是一个特殊字符,因此XML将其替换为"&amp;"

我该如何解决这个问题?我看到了一些关于使用Entity Reference的内容,但我不明白如何使用它。

这是我的代码使用\ n:

ls_DadosAdicionais = "volume=1800;peso=78;altura=157"
ll_pos = POS( ls_DadosAdicionais, ";" ) 
DO
    ls_DadosAdicionais = REPLACE( ls_DadosAdicionais, ll_pos, 1, '~n' )
    ll_pos = POS( ls_DadosAdicionais, ";", ll_pos + 1 )
LOOP WHILE ll_pos > 0
lo_exm = io_xml.createElement( "exame")
lo_exm.SetAttribute( "dados_adicionais", ls_DadosAdicionais )

2 个答案:

答案 0 :(得分:2)

您应该将实际换行符保存到属性中。逃逸由API处理。

换句话说:如果保存字符串"&#xA;",API会正确地将其转义为"&amp;#xA;",以便在再次读取数据时返回字符串"&#xA;"。始终存储您要存储的数据,绝不要进行任何手动转义。

答案 1 :(得分:2)

SetAttributes自动执行实体转换。不要手动替换换行符。只需在传递给SetAttribute的字符串中包含\ n即可。保存时它应该被转换为正确的实体。