2012-07-13 25 views
1

這是我的XML如何使用libxml2的目標C

<MyXML ID="tester" Server="example.com"> 
    <CONF> 
    <MYAPP LOCN="/Application/data/" DATADIR="/tmp/data"> 
    .. 
    </CONF> 
</MyXML> 

這是我使用

NSString *xmlFilePath [email protected]"/Applications/conf/MyConf.xml"; 
    NSLog(@"%@",xmlFilePath); 
    NSData *xmlData = [NSData dataWithContentsOfFile:xmlFilePath]; 
    NSString *xPathQuery [email protected]"/MyXML"; 
    NSArray *xmlArray = PerformXMLXPathQuery(xmlData,xPathQuery); 

它給了我完整的XML作爲NSArray中的代碼來解析XML。如何遍歷這個NSArray,或者如何使用XPath來獲取節點和屬性。 我用

NSString *xPathQuery [email protected]"/MyXML[@ID]"; 

,但它不返回屬性ID,它只是返回null。我認爲這將是最好的遍歷NSArray,但如何做到這一點(我是一個新手到目標C,當我尋找通過返回的NSArray遍歷,我剛剛得到的HTML示例NSArray)

+0

的可能重複的[簡單的libxml2 HTML解析例如,使用目標c時,Xcode,和HTMLparser.h](http://stackoverflow.com/questions/3020849/simple-libxml2-html-parsing-example-使用目標c-xcode-and-htmlparser-h) – WrightsCS 2012-07-13 19:39:10

+0

@WrightCS你真的可以檢查它是否真的重複,這個問題是關於HTML解析,我問XML解析 – Zeus 2012-07-14 09:12:59

回答

2

查看libxml2wrapper並將libxml2用於Cocoa article中的XML解析和XPath查詢。

NSArray *PerformXMLXPathQuery(NSData *document, NSString *query); 
NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query); 

對於整個XML文檔,包含在NSData對象「文件」在, 此函數執行XPath查詢在NSString的「詢問」和 用於匹配的節點返回的NSDictionary的NSArray的一個節點對象 查詢。

上述兩個函數之間唯一的區別是 首先期望正確的XML數據,第二個期望HTML數據。