0

使用 NSXMLDocument,而不使用 XPath,是否有一种简单的方法来解析 XML 文档并将其反序列化为自定义对象以创建对象树层次结构?

例如,如果我有下面显示的 xml,是否可以将详细信息放入 Restaurant 对象和其中的 content 对象?

<restaurants>
   <content>spanish name</content>
   <content>english name</content>
</restaurant>
<spa>
   <content>spa spanish name</content>
   <content>spa english name</content>
</spa>

我将使用您上面的答案来扩展它以在 iOS 中使用 Kissxml 进行编程。由于kissXML 文档提到XML 解析器的行为方式与NSXMLDocument 相同,所以我使用NSXMLDocument 提出了这个问题。

4

1 回答 1

1

如果您知道预期的内容结构,最简单的方法是使用NXMLParser并循环遍历它以查找您需要的位并跟踪前一个位,并在找到它们时构建一个对象。

如果您想要基于树的方法,请考虑学习 XQuery 和 XPath,它们并没有那么糟糕。没有它们,NSXMLDocument 真正为您提供的唯一东西就是 Cocoa 绑定。

归根结底,您必须以某种方式转换数据。

使用 NSXMLDocument,如果可能的话,您仍然可以很好地针对 XML DTD 进行验证,以确保您拥有良好的数据。

使用 NSXMLParser,您可以在没有正式 DTD 的情况下处理事情。你只需要担心数据有多大,你想如何解析它,然后对测试数据进行一些试验和错误,以确保它抓住你想要或需要的东西。

于 2012-10-05T08:47:44.500 回答