Używam TouchXML ze względu na podane ograniczenia NSXML na rzeczywistych iPhone. W każdym razie, ja tylko wychodząc z Objective-C, I pochodzić z tła C#, i czułem się jak się czegoś new..anyhow .. Oto mój plik xml ...Uzyskiwanie wartości elementu w kakao za pomocą TouchXML
<?xml version="1.0" encoding="utf-8"?>
<FundInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/webservices">
<FundsReleaseDate>2009-02-11T00:00:00</FundsReleaseDate>
<FundValue>7800</FundValue>
<FundShares>1000</FundShares>
</FundInfo>
Próbuję uzyskać 7800, tj. FundValue. Czy ktoś może wskazać mi w prawidłowym kierunku, używam TouchXml CXMLDocument i myParser jest typu CXMLDocument próbowałem
NSArray *nodes = [myParser nodesForXPath:@"//FundInfo" error:&err];
Zasadniczo węzłów ma wartość zerową
if ([nodes count] > 0) {
amount = [nodes objectAtIndex:1];
}
Aktualizacja 1: Mam opuszczony parsowania przy użyciu XPath, i zastąpiłem go NSURLRequest, więc teraz mam cały XML w ciąg, ale moje niegrzeczne wprowadzenie do obiektywu-C kontynuuje ... Właśnie zdałem sobie sprawę, jak zepsute stałem się. BCL BC, gdzie rzeczy takie jak Regex są tak łatwo dostępne.
UPDATE2: Zrozumiałem, jak używać RegexKitLite dla regex.
Tak więc pytanie brzmi: jak uzyskać "7800" z wewnątrz FundValue, który jest teraz jednym dużym ciągiem. Potwierdziłem, że mam to w moim NSString, pisząc to używając NSLog.
dzięki za odpowiedź, jestem coraz awarię z następującym komunikatem wyjątek:.. [CXMLElement isEqualToString :]: nierozpoznany selektor wysłany do instancji – kd7
Założę się, że to wszystko jest związane z faktem, że usługa sieciowa próbuję t o spożywa się na bazie .NET, ale niestety nie mam nad nim kontroli, przeszukałem go i wydaje mi się, że atrybut xmlns jest przyczyną wszystkich problemów. – kd7
Nie używam TouchXML w żadnym projekcie, ale używam libxml2 (do czego służy TouchXML), więc biblioteka bazowa działa. Nie zaszokowałoby mnie to, że nie jest to dobrze przetestowana ścieżka kodu, być może trzeba będzie naprawić coś w TouchXML. –