-1

我有一个从数据库中提取的 XML 文件。我在某些字符串和 URL 上遇到错误,因为它包含 XML 将其视为代码的字符,并且要么给出语法错误,要么说实体未定义。由于数据实际上是一个字符串,因此有没有办法设置 XML,以便当数据用引号引起来时,它会忽略它作为代码并将其视为文本?我创建了一个带有标记名称和包含错误的 URL 的示例。标记名称带有 & 符号,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>
4

3 回答 3

0

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

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

最好使用库来执行此操作来滚动您自己的代码。

于 2013-07-17T19:32:17.727 回答
0

在 XML 中,标签内包含的数据<[CDATA[ ... ]]>允许任意字符数据。请参阅XML 中的 <![CDATA[]]> 是什么意思?

但不适用于标签的属性。

于 2013-07-17T19:34:48.550 回答
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 读取器/写入器之前从数据库中清除数据,并对数据中找到的所有保留字符进行替换。

或者,您可以对数据库中的数据进行此替换 - 但是您只需为 XMLRead/Write 修补此问题,而不是为您的特定实现动态地进行此操作。

于 2013-07-17T19:50:10.867 回答