我有一个从数据库中提取的XML文件。我在某些字符串和URL上收到错误,因为它包含XML正在处理的字符,如语法错误或未定义的实体。有没有办法,因为数据实际上是一个字符串,设置XML所以当数据在引号中时,它会将其忽略为代码并将其视为文本?我创建了一个带有标记名称和带错误的URL的示例。标记名称有& sign和URL有msa,ll,spn和iwloc它不喜欢。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<markers>
<marker name="C&O Canal Trail"
address=""
city=""
state=""
zip=""
image=""
width=""
height=""
lat="39.693978"
lng="-78.154822"
category="KML"
notes=""
url="https://maps.google.com/maps/ms?msid=209491726150360274926.0004e18eed520de4890e6&msa=0&ll=39.213103,-77.295685&spn=0.619262,1.540833&iwloc=0004e18eee21c28a5a313"
hike_distance=""
hike_trail_skill_level=""
hike_points_of_interest=""
Camping_Amenities=""
Camping_Best_Sites=""
Camping_Notes=""
/>
</markers>
答案 0 :(得分:0)
您需要对文本进行XML编码,因此请替换:
& with &
< with <
" with "
' with '
> with >
最好使用库来执行此操作以自行编写代码。
答案 1 :(得分:0)
在XML中,<[CDATA[ ... ]]>
标记内包含的数据允许任意字符数据。见What does <![CDATA[]]> in XML mean?
但不适用于标签的属性。
答案 2 :(得分:0)
这是您转换的确切代码。
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<markers>
<marker name="C&O Canal Trail"
address=""
city=""
state=""
zip=""
image=""
width=""
height=""
lat="39.693978"
lng="-78.154822"
category="KML"
notes=""
url="https://maps.google.com/maps/ms?msid=209491726150360274926.0004e18eed520de4890e6&msa=0&ll=39.213103,-77.295685&spn=0.619262,1.540833&iwloc=0004e18eee21c28a5a313"
hike_distance=""
hike_trail_skill_level=""
hike_points_of_interest=""
Camping_Amenities=""
Camping_Best_Sites=""
Camping_Notes=""
/>
</markers>
这里是XML保留字符的参考: http://msdn.microsoft.com/en-us/library/ms145315(v=sql.90).aspx
作为建议,我建议您在数据进入XML Reader / Writer之前清理数据库,并替换数据中的所有保留字符。
或者你可以在你的数据库中替换你的数据 - 但是你只是为XMLRead / Write修补这个问题,而不是为你的具体实现动态地做这个。