NSXMLParser具有多个属性

时间:2010-04-28 21:32:08

标签: iphone cocoa touch nsxmlparser

我有以下XML(为iPhone做一个应用程序):

<Row>
<Field name="employee_id_disp">00070431</Field>
<Field name="given_name">John</Field>
<Field name="family_name">Doe</Field>
</Row> ...

如何仅为其中一个属性检索值,例如,对于属性名称=“given_name”,值为“John”?

感谢您的回答。

2 个答案:

答案 0 :(得分:4)

据推测,您将使用NSXMLParser来解析此问题。

这意味着在didStartElement:委托回调中,您应该检查传递的attributes字典,看它是否有一个带有“given_name”值的密钥“name”。如果是这样,您将需要设置一些标记,您可以开始记录foundCharacters:回调中找到的字符。一旦到达元素“Field”的didEndElement:回调,您就会将所有字符聚合成一个字符串,并且该字符串就是名称。 (最有可能的是,所有字符都将在foundCharacters:的一次回调中报告,但这不能得到保证。)

答案 1 :(得分:0)

最简单的方法:使用XPath处理器并评估表达式:

"/Row/Field[@name='given_name']/text()"

结果应该返回“John”。您可以在此模拟器中尝试:http://www.mizar.dk/XPath/

这是一种访问libxml2附带的XPath的简单方法:http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

用于查找哪些XML解析器具有XPath支持的良好资源:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project