Byłoby miło wiedzieć, co faktycznie zamierzasz zrobić z XML. Sposób, w jaki go analizujesz, zależy w dużym stopniu od przetwarzania, które musisz wykonać, a także od rozmiaru.
Jeśli jest to jednorazowe zadanie, zacząłem w przeszłości od odkrycia struktury XML, zanim zrobię cokolwiek innego. Mój DTDGenerator (patrz saxon.sf.net) został napisany w tym celu dawno temu i nadal spełnia swoją rolę, są teraz dostępne inne narzędzia, ale nie wiem, czy przetwarzają strumieniowo, co jest warunkiem wstępnym.
Możesz napisać aplikację, która przetwarza dane przy użyciu parsera strumieniowego typu "przeciągnij lub naciśnij" (SAX lub StAX). To, jak łatwo jest to robić, zależy od tego, ile przetwarzania masz do wykonania i ile stanu musisz utrzymywać, czego nam nie powiedziałeś. Alternatywnie możesz spróbować streamowanego przetwarzania XSLT, które jest dostępne w Saxon-EE.
W przypadku dużych plików, należy zawsze używać parser ciągnącego jak XMLReader; po prostu spróbuj załadować 40 GB pliku do pamięci dla SimpleXML. –
z powiązanych wpisów: http://stackoverflow.com/questions/911663/parsing-huge-xml-files-in-php?rq=1 – hexblot
40 Gb? Wow, miałem problem z plikiem 700 Mb xml na komputerze Mac OS X. –