Corriger la malformation de XML en PHP avant de les traiter à l'aide de fonctions DOMDocument

Je suis besoin de charger un document XML en PHP qui provient d'une source externe. Le XML ne pas déclarer l'encodage et contient des caractères illégaux comme &. Si j'essaie de charger le document XML directement dans le navigateur, j'obtiens une erreur comme "Un caractère non valide a été trouvé dans le contenu des textes", également lors du chargement du fichier en PHP je reçois beaucoup de mises en garde comme: xmlParseEntityRef: no name in Entity et Input is not proper UTF-8, indicate encoding ! Bytes: 0x9C 0x31 0x21 0x3C.

Il est clair que le XML n'est pas bien formé et contient des caractères illégaux qui doivent être convertis en entités XML.

C'est parce que le flux XML est constitué de données fournies par beaucoup d'autres utilisateurs et de toute évidence, elle n'est pas en cours de validation ou reformaté avant de me le procurer.

J'ai parlé du fournisseur du flux XML et ils disent qu'ils sont à essayer d'obtenir les fournisseurs de contenu pour faire le tri, mais cela semble idiot comme ils devraient l'être de la validation de la saisie en premier.

En gros, j'ai besoin de fixer le XML de corriger d'éventuelles erreurs de codage et de convertir tous les caractères illégaux à des entités XML de sorte que le chargement XML problème lors de l'utilisation de PHP DOMDocument fonctions.

Mon code ressemble actuellement:

  $feedURL = '3704017_14022010_050004.xml';
  $dom = new DOMDocument();
  $dom->load($feedURL);

Exemple de fichier XML montrant problème de codage (cliquez pour télécharger): feed.xml

Exemple XML qui contient des caractères qui n'ont pas été convertis en entités XML:

<?xml version="1.0"?>
<feed>
<RECORD>
<ID>117387</ID>
<ADVERTISERNAME>Test</ADVERTISERNAME>
<AID>10544740</AID>
<NAME>This & This</NAME>
<DESCRIPTION>For one day only this is > than this.</DESCRIPTION>
</RECORD>
</feed>
"Comment tous les autres clients heureux(?) traiter les données et pourquoi suis-je le seul misérable guy" - c'est une question que je voudrais demander au fournisseur. Pouvez-vous fournir un (exact) exemple de document?
Je me demandais moi-même. J'en ai parlé à eux et ils m'ont dit qu'ils sont d'avoir des problèmes de qualité des données, et l'ont dit les fournisseurs de contenu pour faire le tri. Je suis en supposant que les autres clients ont trouvé un moyen de résoudre le flux XML avant de tenter de le traiter. D'où ma question.
J'ai téléchargé un sous-ensemble de l'ensemble du document XML le XML complet que plus de 42 000 lignes.

OriginalL'auteur Camsoft | 2010-02-14