我有以下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”?
感谢您的回答。
答案 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