문제

XPath를 사용하여 XML 문서를 구문 분석하려고합니다. 내 nsxmlelement의 중 하나는 다음과 같습니다.

<foo bar="yummy">

나는 속성 막대의 값을 얻으려고 노력하고 있지만 내가 사용하는 코드의 해석은 BAR = "woo"를 제공합니다. 이는 Woo와 Woo에만 액세스하기 위해 추가 문자열 처리를 수행해야합니다.

본질적으로 나는 같은 일을하고 있습니다

NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];

어쨌든 위의 코드를 작성하여 나에게 맛있고 바 = "맛있는"과 비교하여 문자열을 구문 분석 할 수 있습니까?

감사.


TouchXML이 사용되고 있다고 가정하면 여전히 비슷한 결과를 얻을 수 있습니까? 속성의 값만 잡는 것과 마찬가지로 속성 = "value"없이? 그 결과 값을 얻기 위해 문자열을 구문 분석해야합니다.

도움이 되었습니까?

해결책

T

TOUXHXML 클래스는 NSXML 클래스에 직접 매핑됩니다. nsxmlnode-> cxmlnode, nsxmldocument-> cxmldocument, nsxmlelement-> cxmlelement. 명백한 이유로 NSXML 및 TouchXML 클래스를 혼합하고 일치시킬 수 없습니다.

TOUXHXML 방법은 NSXML 메소드에 직접 매핑되지만 작은 하위 집합 만 지원됩니다. 상수 및 열거 이름은 거의 동일합니다 (CXML ... vs NSXML ...) 그러나 상수 값은 동일하지 않습니다.

참조

일반적인 Apple 클래스 또는 TouchXML 프레임 워크를 사용하면 다음 코드가 예제의 문자열 "Yummy"만 제공합니다.

 NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
 NSString *value = [[nodes objectAtIndex:0] stringValue];

행운을 빕니다,

브라이언 g

다른 팁

iPhone에서 NSXMLDocument 클래스를 사용하려는 경우이 클래스 (및 관련 NSXMLNODE, NSXMLELEMENT 등 클래스)가 휴대 전화에서 사용할 수 없기 때문에 실망 할 것입니다 (시뮬레이터에서 사용할 수 있습니다. 혼란 스러울 수 있습니다).

Libxml2를 살펴보고 전화에서 XML 구문 분석을 수행하십시오. 이 작업을 수행하기위한 몇 가지 무료 프레임 워크 (TouchXML이 좋습니다)가 있습니다.

즉, Mac 에서이 코드를 실행하려면 NSXMLELEMENT 메소드를 사용할 수 있습니다. -attributeForName: 원하는 속성 만 꺼내기 위해.

Ben의 오른쪽 - iPhone -SDK 코드는 NSXMLDocument로 빌드하고 시뮬레이터에서 실행되지만 장치에서 전혀 작동하지 않습니다. 문서는 아마도 어딘가에 언급했지만 상당히 모호합니다. TouchXml은 터치 코드의 일부입니다. 그것에 대한 자세한 정보를 찾을 수 있습니다 여기.

iPhone은 NSXMLPARSER에 액세스 할 수 있으며 멋진 작은 색소폰 파서입니다. Aaron Hillegass는 NSXMLPARSER 사용에 대한 좋은 기사를 가지고 있습니다. XPath를 지원하지 않지만 XML을 데이터 객체에 찢어 버리는 데 매우 편리합니다.

코코아에서 XML을 구문 분석합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top