Mam do przeczytania dość ciężkie pliki XML (od 200 MB do 1 GB), które dla niektórych z nich są nieprawidłowe. Podam mały przykład:PHP - Odczyt i naprawa dużych niepoprawnych plików XML
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<item>
<title>Some article</title>
<g:material><ul><li>50 % Coton</li><li>50% Lyocell</li></g:material>
</item>
</rss>
Oczywiście, istnieje brakuje </ul>
zamknięcia tag w tagu g:material
. Co więcej, ludzie, którzy rozwinęli ten kanał, powinni mieć załączoną treść do CDATA
, której nie zrobili ... W zasadzie to właśnie chcę zrobić: dodaj tę brakującą sekcję CDATA
.
Próbowałem użyć parser SAX do odczytu tego pliku, ale nie powiedzie się, czytając tag </g:material>
, ponieważ brakuje tagu </ul>
. Próbowałem z XMLReader, ale w zasadzie ten sam problem. Prawdopodobnie mógłbym zrobić coś z DomDocument :: loadHtml, ale rozmiar tego pliku nie jest tak naprawdę zgodny z podejściem DOM. Czy masz pojęcie, jak mogę po prostu naprawić ten plik bez konieczności kupowania dużej ilości pamięci RAM, aby działał DomDocument? Dzięki.
Tak, powinni byli to zrobić. zawsze możesz spróbować ponownie wyszukać/zamienić wszystkie pliki, jeśli wiesz, gdzie są problemy. ale na początku nie powinno to stanowić twojego problemu. – mpm
Hej, Remi, czy nie potrafisz odczytać napisu, dodając do tego sekcje CDATA, zanim wepchniesz je do swojego programu ładującego XML? – brisssou
Tak, właśnie o tym myślałem i co teraz robię, ale nadal mam nadzieję, że jest lepsze myślenie niż czytanie XML-a przez znak lub znajdowanie/zamiana za pomocą regexp :) – Remi