我已經實現了使用TouchXml解析器的演示。它工作正常。但我想解析下面的xml。如何實現TouchXml解析器?
例如:
<Root>
<tag1></tag1>
<tag2>
<temp1></temp1>
<temp2></temp2>
<temp3></temp3>
</tag2>
<tag3></tag3>
</Root>
如何分析這種類型的例子嗎?
我已經實現了使用TouchXml解析器的演示。它工作正常。但我想解析下面的xml。如何實現TouchXml解析器?
例如:
<Root>
<tag1></tag1>
<tag2>
<temp1></temp1>
<temp2></temp2>
<temp3></temp3>
</tag2>
<tag3></tag3>
</Root>
如何分析這種類型的例子嗎?
TouchXML不錯,易於使用。首先,您需要解析文檔:
NSError *theError = NULL;
CXMLDocument *theXMLDocument = [[[CXMLDocument alloc] initWithXMLString:input options:0 error:&theError] autorelease];
然後,您可以使用XPath查詢文檔的結構。例如提取根元素,你可以這樣做:
NSArray *foundRoots = [theXMLDocument nodesForXPath:@"//Root" error:&theError];
CXMLElement *root = [foundRoots objectAtIndex:0];
(你經常會得到陣列回來,所以你的情況,你可以只取第一個元素,假設它在文件中存在)
你也可以做一些事情,比如獲取元素的所有子元素。所以,如果我們要得到所有我們可以這樣的標籤:
NSArray *children = [root children];
或者,我們可以得到一個標籤具有特定名稱:
NSArray *tag1 = [root elementsForName:@"tag1"];
(同樣,你得到一個數組,這樣做正確的事情和檢查)
您的數據是否符合任何架構?
非常好的答案。我問過同樣的問題,但我沒有得到正確回答。你有任何示例項目,以便我能理解它嗎? – harshalb 2009-12-09 06:43:25
我還沒有使用過TouchXML,因此不能幫助解決問題(除了編輯示例以使其可見:-))。但是,你的目標僅僅是學習如何使用TouchXML,或者你真的只是想用它來解析一個簡單的小XML文件嗎?如果是後者,無論如何您都可以使用NSXMLParser更好 - 或者在http://www.levelofindirection.com/journal/2009/9/24/elegant-xml-parsing-with-objective-c.html上查看我的博客條目一個包裝 – philsquared 2009-12-08 08:05:24