2016-05-26 6 views
1

私は、私たちの製品からXMLファイルを作成するWordpress/WooCommerceプラグインを作成しました。XMLフィードに不正な文字がありますか?

しかし、一部の行には不正な文字があります。

error on line 15622 at column 22: Input is not proper UTF-8, indicate encoding ! 
Bytes: 0x03 0xC3 0xB6 0x73 

XMLが正しく解析されるように、どのように私は、この問題を解決することができますか?次いで

$dom = new DOMDocument('1.0', 'UTF-8'); 

// create root element 
$root = $dom->createElement("termeklista"); 
$dom->appendChild($root); 
$dom->formatOutput=true; 

データを充填するとwhileループ:

XML FEED FILE

生成するためのコードのようなものです。問題はdescriptionタグにあります。

// DESCRIPTION 

$description = $dom->createElement("leiras"); 
$producta->appendChild($description); 
// create CDATA section 
$cdata = $dom->createCDATASection("\n".$loop->post->post_excerpt."\n"); 
$description->appendChild($cdata); 

私は間違った文字を置き換えるためのiconv、はutf8_encode、カスタム機能を試してみましたが、私は何の問題がそれを把握することはできません。

WooCommerce製品の抜粋には、不正な文字が含まれていません。

+0

これはどんな言語のタグを追加することをお勧めします(私は思います)。あなたはそのように多くの意見を得るでしょう。 –

答えて

2

0x03は(別名^C伝送の終わり別名ETX別名)ないallowed character in XMLです:

[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] 

したがって、あなたのデータは、XML、および任意の準拠のXMLプロセッサの必須ではありませんあなたが受け取ったようなエラーを報告してください。

あなたは、任意のXMLライブラリでそれを使用する前に、手動または自動でテキストではなく、XML、としてそれを処理することにより、任意の不正な文字を削除することで、データを修復する必要があります。

+0

ええ、なぜそれが起こっているのですか?その製品を削除した場合:inofolic、エラーは他の行にあります。だからそれはポスト抜粋の内容には関係していない。 – beamkiller

+0

許容範囲外の文字がデータに存在するため、エラーが発生しています。データの一部を削除した後でも引き続きエラーが発生している場合は、問題のキャラクターが発生していません。 – kjhughes

0

ので、私はこの質問でstripInvalidXML()関数で問題を解決することができました。著者のおかげです。 XMLは現在有効です。

stripInvalidXML from file

関連する問題