XML 解析
首先要导入Gdata,添加库libxml2,在Header Search Paths里写入/usr/include/libxml2,GDataXMLDocument获取指针,GDataXMLElement获取根节点 xpath:用指针调用 nodesForXPath方法即可
//获取文件路径
NSString* path = [[NSBundle mainBundle] pathForResource:@"xml" ofType:@"txt"];
//获得文件内容
NSString* xmlStr = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
//<CityName>北京</CityName>
//name:CityName value:北京
//<Item key="1" value="A"></Item>
//名称 值 属性 属性 .......
//CityName 北京
//Item key="1" value="A"
//属性名称 属性值
// key 1
//value A
/*
<root>
<systemConfig>
<CityName>北京</CityName>
<CityCode>201</CityCode>
<ParentCityCode> 0</ParentCityCode>
<areaCode>010</areaCode>
<AgreementUrl></AgreementUrl>
<IntentionLevel>
<Item key="1" value="A"></Item>
<Item key="2" value="B">BBB</Item>
<Item key="3" value="C"></Item>
*/
//开始GData解析
GDataXMLDocument* xmlDoc = [[GDataXMLDocument alloc] initWithXMLString:xmlStr options:0 error:nil];
//XPath
// /root/systemConfig/CityName
GDataXMLElement* cityName = [[xmlDoc nodesForXPath:@"/root/systemConfig/CityName" error:nil] objectAtIndex:0];
NSLog(@"%@",cityName.stringValue);
/*
//相对路径
| 多路径
[1] 拿出第一个
[last()-1] 拿出倒数第二个
[position() < 3] 拿出前两个元素
[@key] 返回节点必定有属性叫key
[@key=2] 拿出key==2的节点
[@key>1] 拿出key>1的节点
*/
//<Item key="1" value="A"/>
//<Item key2="1" value2="A"/>
//Item
NSArray* array = [xmlDoc nodesForXPath:@"//IntentionLevel/Item[@value='B']" error:nil];
for (GDataXMLElement* itemEle in array) {
NSLog(@"%@",itemEle.stringValue);
NSLog(@"%@",itemEle.XMLString);
NSLog(@"%@",itemEle.name);
for (GDataXMLElement *attEle in itemEle.attributes) {
NSLog(@"---%@",attEle.XMLString);
NSLog(@"----%@",attEle.name);
}
}
输出日志:
2013-03-13 00:59:40.038 xmlDemo[1562:c07] 北京 2013-03-13 00:59:40.039 xmlDemo[1562:c07] BBB 2013-03-13 00:59:40.040 xmlDemo[1562:c07] <Item key="2" value="B">BBB</Item> 2013-03-13 00:59:40.040 xmlDemo[1562:c07] Item 2013-03-13 00:59:40.041 xmlDemo[1562:c07] ---key="2" 2013-03-13 00:59:40.041 xmlDemo[1562:c07] ----key 2013-03-13 00:59:40.041 xmlDemo[1562:c07] ---value="B" 2013-03-13 00:59:40.042 xmlDemo[1562:c07] ----value
浙公网安备 33010602011771号