2017-11-13 14 views
2

simplexml_load_string()を使用してXML APIの応答を解析します。simplexml_load_string()StartTag:無効な要素名

$lien = "http://myresponseurl"; 
$page = simplexml_load_string($this->get_data($lien)); 

Everythinkは、この場合を除き、良い取り組んでいる:テキストを取り戻すため

<libdivision><1500 Poule H</libdivision> 

は "< 1500 PouleのH" である必要がありますが、 "<" caractèreはXMLでもありますオープニングタグのシンボル...

「< 1500 Poule H」に間違いを起こさずに戻るにはどうすればよいですか?

Warning: simplexml_load_string(): Entity: line 4: parser error : StartTag: invalid element name 
Warning: simplexml_load_string(): <libdivision><1500 Poule G</libdivision> 
Warning: simplexml_load_string():^

ヘルプ

答えて

1
<libdivision><1500 Poule H</libdivision> 

ためのおかげでこれは無効なXMLです。 APIのプロバイダがこれを修正する必要があります。これはAPIの明確なバグであり、クライアントは不正なデータを処理する責任を負いません。 2つのオプションがあります。

はCDATAフィールドで包み:

<libdivision><![CDATA[<1500 Poule H]]></libdivision> 

または記号エンコード:

<libdivision>&lt;1500 Poule H</libdivision> 
+0

を私は、あなた@DanFromGermanyに同意するが、バグ修正を待っているんです私はそれに対処しなければならない...:S私は自分のためにできることは何もない? – Macbernie

+1

@Macbernieシンプレックス(simplexml)でデータをロードする前に '>'がないときに '<'文字を置き換える正規表現を試してみることができますが、これは常に安全に動作しない可能性があるため危険です。最善の方法は、プロバイダを待ってこれを速く修正することです。 – DanFromGermany

関連する問題