由于字符串中的某些字符导致XML文件错误

时间:2013-07-17 19:26:55

标签: xml google-maps xml-parsing

我有一个从数据库中提取的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>

3 个答案:

答案 0 :(得分:0)

您需要对文本进行XML编码,因此请替换:

& with &amp; 
< with &lt;
" with &quot;
' with &apos;
> with &gt;

最好使用库来执行此操作以自行编写代码。

答案 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&amp;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&amp;msa=0&amp;ll=39.213103,-77.295685&amp;spn=0.619262,1.540833&amp;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修补这个问题,而不是为你的具体实现动态地做这个。