将 XMLRPC/Web 服务与核心数据集成
Posted
技术标签:
【中文标题】将 XMLRPC/Web 服务与核心数据集成【英文标题】:Integrating XMLRPC/Web Services with Core Data 【发布时间】:2010-11-23 05:14:49 【问题描述】:我正在为一个项目进行设计,但没有实施任何东西 - 所以我仍在考虑核心数据是否适用于该项目。
这是我的查询 -
我想使用 Core Data 创建一个托管对象模型来表示一些服务器端对象,例如文件夹、文件等...... 所有对象(文件夹、文件等)都可以通过返回一些格式良好的 XML 的 XMLRPC API 访问。
例如,可能有一个名为 getFolders 的 API 可以返回以下内容 -
<xml>
<folders>
<folder id=1>
<name>Test 123</name>
<files>
<file id=100>
<name>hello.txt</name>
<path>./hello.txt</path>
</file>
...
</files>
</folder>
...
</folders>
同样可以有一个 updateFolders API 对现有文件夹项进行操作,为简单起见,我们可以说它只是更新文件夹名称。对它的请求将发布如下内容 -
<xml>
<method name="updateFolder">
<folder_id="1">
<params>
<param name="folder_name" value="Test"/>
</params>
</method>
我在想办法——
1. How can I represent folder as a managed object i.e., how do I initialize it from the above XML
2. Once initialized, how can I handle an update to it using the updateFolder API shown above
看起来像 XMLStoreType 这样的 NSPersistentStore 直接指向保存最终数据的实际 XML 文件。在我的例子中,XML 只是从 XMLRPC 调用返回的内容,实际数据存储在服务器端数据库中。因此,由于存储不是对象的直接表示(或存储对象的位置),我想知道是否应该创建一个自定义 NSAtomicStore 并分别处理加载和保存以进行初始化和更新。这是为 NSAtomicStore 执行此操作的链接 -
https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/AtomicStore_Concepts/Articles/asLoading.html#//apple_ref/doc/uid/TP40005298
请让我知道这是否有意义或是否有更好的方法来处理此问题。
【问题讨论】:
【参考方案1】:没有简单的方法可以满足您的要求,Core Data 不会让您更轻松。
我假设您已阅读文档 - 您需要确定一个合适的模型来在本地表示您的远程数据,管理远程端和本地端之间的交互,并同步两端之间的状态。决定和协调您的同步过程是最困难的部分。我不确定是否有任何第三方框架可以自动化这个过程。
【讨论】:
【参考方案2】:你读完了吗:
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html
也可以查看TBXML:
TBXML 是一个轻量级的 XML 文档解析器,用 Objective-C 编写,设计用于 Apple iPad、iPhone 和 iPod Touch 设备。 TBXML 旨在提供尽可能快的 XML 解析,同时使用最少的资源。这种对绝对效率的要求是以牺牲 XML 验证和修改为代价的。无法从 TBXML 对象修改和生成有效的 XML,并且在导入和解析 XML 文档时不会执行任何验证。
【讨论】:
以上是关于将 XMLRPC/Web 服务与核心数据集成的主要内容,如果未能解决你的问题,请参考以下文章
Python机器学习实战决策树与集成学习——集成学习GBDT应用实例