如何在IOS中存储存储在sqlite数据库中的xml解析器数据?

时间:2015-02-11 14:48:56

标签: ios objective-c xml sqlite

我想在Sqlite数据库中插入xml数据。

例如:

UPDATE OBJ_ART SET TITLE = '<?xml version='1.0' encoding='UTF-8'?><root available-locales="en_US,fr_FR," default-locale="en_US"><Title language-id="en_US">Distribution Sing EN</Title><Title language-id="fr_FR">Distribution Bâtiment</Title></root>', CONTENT = ‘ABCD’, STRUCT_ID = 12709, DISPLAY_DATE = 1422890 WHERE ART_ID = 12716

你能不能指导我如何将xml解析器数据存储在sqlite数据库中,

2 个答案:

答案 0 :(得分:0)

使用SQLite时,通常应该避免使用stringWithFormat构建SQL语句,而是使用SQL,如:

UPDATE OBJ_ART SET TITLE = ?, CONTENT = ?, STRUCT_ID = ?, DISPLAY_DATE = ? WHERE ART_ID = ?

然后,可以使用SQLite函数sqlite3_bind_text, sqlite3_bind_int等将值绑定到SQL中的?占位符。这将优雅地处理恰好在其中包含引号的值。

因此,调用sqlite3_prepare_v2来准备SQL语句,然后为每个列调用sqlite3_bind_xxx,然后sqlite3_step执行SQL,完成后调用{{1}释放与语句关联的内存。

更简单,使用像FMDB这样的库,这大大简化了这个过程。

答案 1 :(得分:0)

如果要在Sqlite中插入或更新XML数据。你只需遵循一些规则。

我的例子:

UPDATE OBJ_ART SET TITLE ='&lt;?xml version=&apos;1.0&apos; encoding=&apos;UTF-8&apos;?&gt;&lt;root available-locales=&quot;en_US,fr_FR,&quot; default-locale=&quot;en_US&quot;&gt;&lt;Title language-id=&quot;en_US&quot;&gt;Distribution Sing EN&lt;/Title&gt;&lt;Title language-id=&quot;fr_FR&quot;&gt;Distribution Bâtiment&lt;/Title&gt;&lt;/root&gt;', CONTENT = ‘ABCD’, STRUCT_ID = 12709, DISPLAY_DATE = 1422890 WHERE ART_ID = 12716

这很简单。您只需将XML标记替换为HTML实体。

HTML entities:

 1. < ----- replace to ---- &lt;
 2. > ----- replace to ---- &gt;
 3. " ----- replace to ---- &quot;
 4. ' ----- replace to ---- &apos;

我希望它能奏效。在发送SOAP动作的每个地方,你也必须做同样的事情。