web-dev-qa-db-ja.com

XML検証エラー:EntityRef:expecting ';'

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

102行目の103列目のエラー:EntityRef:expecting ';'

何が問題なのか理解できません。

32
user99322

URLはエスケープする必要があります。

& XMLでは、文字を使用して文字参照を構文&name; (注意 ; 名前の後)。パーサーは ; しかし、それを見つけることができません(より多くの利用可能な区切り文字があり、これは最も一般的なケースです)。

その後、ソリューションはエスケープされます(その方法は、そのXMLファイルを生成するために使用する言語によって異なります)が、最終結果は次のようになります。

<url>
  <loc>http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&amp;checkingCourseFrom=preLogin#.U2DcKvmSySo</loc>
</url>

プレーン&はエスケープされたバージョンに置き換えられました&amp;。詳細については、 この簡単な記事 を参照してください。

別の可能な解決策(必要ない場合/エスケープできない場合)は、次のようにURLを CDATAセクション で囲むことです。

<url>
  <loc><![CDATA[http://www.ezed.in/ezed/courseDemoIntroPage.do?courseId=COU10000000138003530&checkingCourseFrom=preLogin#.U2DcKvmSySo]]></loc>
</url>
76
Adriano Repetti

以下のような別の方法:

CDATA」の代わりに、urlノードにhtmlspecialcharsPHPネイティブ関数を使用できます。 xml出力でCDATAを必要としないxmlフィードの一部で機能するため、これは誰かに役立つでしょう。

ありがとう

4
Vinod Patidar

PHP=を使用してリンクを構築している場合、この関数を使用できます。

htmlspecialchars();

目的の文字列をHTML文字にフォーマットして、<loc>として挿入できるようにします。

0
Bullsized