我试图使用XPath解析一个XML文档。我的NSXMLElement之一看起来如下所示,假设如下:
<foo bar="yummy">我试图获取属性条的值,不管我使用的代码如何解释,都会返回bar=" woo ",这意味着我需要进行进一步的字符串处理,以获得对woo和woo的单独访问。
从本质上说,我做的事情是
NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];不管怎么说,写上面的代码只是为了让我感觉愉快,而不是bar=“美味”,这样我就可以不用解析字符串了吗?
谢谢。
假设使用了TouchXML,是否仍然需要获得类似的结果?就像只获取属性的值,而没有attribute=“值”一样?这导致必须进一步解析字符串才能得到值。
发布于 2008-10-28 03:59:32
Apple被认为是苹果NSXML实现的完全复制,所以它应该是相同的,除非您将用C-方法替换所有NS-方法。
TouxhXML类直接映射到NSXML类。NSXMLNode -> CXMLNode,NSXMLDocument -> CXMLDocument,NSXMLElement -> CXMLElement。由于明显的原因,不能混合和匹配NSXML和TouchXML类。 TouxhXML方法也直接映射到NSXML方法,但只支持一小部分方法。常量名称和枚举名称几乎是等价的(CXML.(与NSXML.)但是不变的值不会是等价物。
参考文献
使用常规的Apple或TouchXML框架,下面的代码将只为您的示例提供字符串“美味”。
NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
NSString *value = [[nodes objectAtIndex:0] stringValue];祝好运,
Brian G
发布于 2008-10-28 00:52:06
如果您试图在NSXMLDocument上使用iPhone类,您会非常失望,因为这个类(以及相关的NSXMLNode、NSXMLElement等类)在电话中是不可用的(它们在模拟器中可用,这可能会让人感到困惑)。
看一看libxml2在电话上进行XML解析。有几个免费的框架(我相信TouchXML是一个很好的框架)。
尽管如此,如果您想在Mac上运行这段代码,可以使用NSXMLElement方法-attributeForName:来提取您想要的属性。
发布于 2008-10-28 01:59:09
本的右-虽然iPhone代码将使用NSXMLDocument构建并在模拟器中运行,但它在设备上根本无法工作。医生们可能在某个地方提到过,但它相当模糊。TouchXML是TouchCode的一部分;您可以找到关于它的更多信息,这里。
https://stackoverflow.com/questions/241857
复制相似问题