Jak analizować pliki XML w Xcode

Użyj Xcode do pozyskiwania, analizowania i działania na treści ze zdalnego pliku XML

Chociaż wbudowany XML parser dodaje prawdziwą wartość do nowej aplikacji komputerowej lub mobilnej, kodowanie tej funkcjonalności zwykle wymaga dużo czasu na rozwój i testów beta. Program Xcode firmy Apple zawiera parser XML, który omija większość tej ręcznej pracy.





Plik XML może zawierać wszystko, od podstawowych danych o Twojej aplikacji po kanał RSS witryny internetowej. Mogą również być świetnym sposobem na zdalne aktualizowanie informacji w Twojej aplikacji, omijając w ten sposób potrzebę przesyłania nowego pliku binarnego do Apple, aby po prostu dodać nowy element do listy.

Proces Xcode

Wbudowany proces Xcode zawiera etapy inicjalizacji zmiennych, które mają być używane, uruchamianie procesu parsera XML, dostarczanie temu procesowi pliku, ocenianie poszczególnych elementów i znaków (wartości) w tych elementach, rozpoznawanie końca pojedynczego elementu oraz zakończenie procesu parsowania.



Użyj parsera XML

Aby zilustrować szczegóły, przeanalizujemy przykładowy plik z Internetu, przekazując mu konkretny adres internetowy (URL).

Zacznij od zbudowania pliku nagłówkowego. To jest przykład bardzo prostego pliku nagłówkowego dla kontrolera widoku szczegółów z minimalnymi wymaganiami dotyczącymi parsowania naszego pliku:



|_+_|


Funkcja parseXMLFileAtURL uruchamia proces. Po zakończeniu „artykuły” NSMutableArray zawierają dane. Tablica składa się ze słowników mutowalnych z kluczami powiązanymi z nazwami pól w pliku XML.

Następnie zainicjuj proces:

|_+_|

Ta funkcja działa na początku procesu. Nie ma potrzeby umieszczania czegokolwiek w tej funkcji, ale jeśli chcesz wykonać zadanie, gdy plik zaczyna być parsowany, to jest to miejsce, w którym umieścisz swój kod.

Poleć programowi, aby coś pobrał

Następnie poinstruuj program, aby coś pobrał:



|_+_|


Ta funkcja nakazuje silnikowi pobranie pliku z określonego adresu internetowego (URL) i rozpoczęcie procesu jego analizy. Mówimy serwerowi zdalnemu, że jesteśmy Safari działającym na Macu, na wypadek, gdyby serwer próbował przekierować iPhone'a / iPada do wersji mobilnej.

Opcje na końcu są specyficzne dla niektórych plików XML. Większość plików RSS i ogólnych plików XML nie wymaga ich włączenia.



Błąd — sprawdź wynik

Wykonaj podstawowe sprawdzanie błędów w wyniku:

|_+_|


Mięso parsera XML zawiera trzy funkcje, jedną, która działa na początku pojedynczego elementu, jedną, która działa w trakcie analizowania elementu i jedną, która działa na końcu elementu.



W tym przykładzie przeanalizujemy plik podobny do plików RSS, które dzielą elementy na grupy pod nagłówkiem przedmiotów w pliku XML. Na początku przetwarzania sprawdzamy nazwę elementu „item” i przydzielamy nasz słownik pozycji, gdy zostanie wykryta nowa grupa. W przeciwnym razie inicjujemy naszą zmienną dla wartości:

|_+_|


Gdy znajdziemy znaki, po prostu dodajemy je do naszej zmiennej Wartość elementu :



|_+_|

Co się dzieje po zakończeniu analizowania

Kiedy program zakończy przetwarzanie elementu, musi wykonać jedną z dwóch rzeczy:

  • Jeśli końcowym elementem jest przedmiot , zakończyliśmy naszą grupę, więc dodamy nasz słownik do naszej tablicy artykułów.
  • Jeśli element nie jest przedmiot , ustawimy wartość w naszym słowniku za pomocą klucza pasującego do nazwy elementu. (Oznacza to, że nie potrzebujemy osobnej zmiennej dla każdego pola w pliku XML. Możemy je przetwarzać nieco bardziej dynamicznie.)

Jest to ostatnia funkcja potrzebna do naszej procedury parsowania; kończy dokument. Umieść tutaj dowolny kod końcowy lub określ podprogram korekcji błędów:

|_+_|

Zapisz dane

Jedną z rzeczy, które wiele aplikacji może chcieć tutaj zrobić, jest zapisanie danych lub pliku XML w pliku na urządzeniu. W ten sposób, jeśli urządzenie nie będzie połączone z Internetem przy następnym załadowaniu aplikacji, nadal będzie mogło uzyskać dostęp do tych informacji.

Oczywiście nie możemy zapomnieć o najważniejszej części: powiedzeniu aplikacji, aby przeanalizowała plik (i podając jej adres internetowy, pod którym można go znaleźć!). Aby rozpocząć proces, dodaj ten wiersz kodu w odpowiednim miejscu, w którym chcesz wykonać przetwarzanie XML:

|_+_|