-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 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 に答える
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 に答える