我正在开发epub阅读器程序。
要获取epub文件的内容,我想解析container.xml。
在这里。
<?xml version="1.0"?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
<rootfiles>
<rootfile full-path="OPS/content.opf"
media-type="application/oebps-package+xml"/>
</rootfiles>
</container>
我想获取元素,所以我使用了以下代码。
CXMLDocument* manifestFile = [[[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:manifestFilePath] options:0 error:nil] autorelease];
NSArray* nodes = [manifestFile nodesForXPath:@"//rootfiles" error:nil];
NSLog(@"Nodes count is %d\n", [nodes count]);
我得到以下结果。
Nodes count is 0
为什么我得到这个结果?
请帮帮我。
感谢。
答案 0 :(得分:2)
The problem is that your XML has a namespace.您需要显式定义在使用XPath查询时要使用的命名空间。
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"urn:oasis:names:tc:opendocument:xmlns:container",
@"oasis",
nil];
NSArray* nodes = [manifestFile nodesForXPath:@"//oasis:rootfiles" namespaceMappings:dict error:nil];
NSLog(@"Nodes count is %d\n", [nodes count]); // --> Nodes count is 1