我有一些XML,如下所示:
<dd>
<persson>
<name>sam</name>
<tel>9748</tel>
</persson>
<cat>
<name>frank</name>
</cat>
</dd>
我将它解析为两个SQL表,一个用于标记,一个用于pcdata。“开始”和“停止”列表示标记出现的位置和结束位置。在
^{pr2}$
现在我想将这个数据库解析回原始格式的XML。我想写一个函数,它接受两个表并将XML写在一个文件中。我使用python和psycopg2来实现这一点。在
Tags:
简单的答案是不要,如果您使用的是postgres8.3或更高版本,那么就使用SQL来构建XML。会容易得多。在
http://www.postgresql.org/docs/current/static/functions-xml.html
嗯,解码了你的“专栏”:
我有几个问题要问你:你是怎么做到的?你为什么这么做?你到底想达到什么目的?请注意,您的问题标题具有相当的误导性,“SQL表”只是您存放数据的特殊表示的地方。在
下面是一些伪代码来执行您想执行的操作:
^{pr2}$对于上面提到的是否会将“positions”放在输出流中的问题:不,它不会;下面的代码片段显示它是有效的。这些位置仅用于将汤按正确的顺序分类。在“join”中,
piece[0]
表示位置,但它没有使用,只有piece[1]
这是必需的文本。在关于SQL评论问题:
虽然用SQLite显示,但这是bog标准SQL。如果您的数据库没有使用
||
作为连接运算符,请尝试+
。在你忘了问一个问题:“我怎么才能把一个
<?xml blah-blah ?>
的东西放在前面?”。答案:见下文。在首先,如果Postgres包含为您创建XML的机制,请使用它们。在
其次,除非你真的知道自己在做什么,否则不要使用字符串操作来创建XML。即使这样,也不要这样做。例如,如果任何列包含与号,那么仅仅从数据库中连接字符串值将生成格式不好的XML。在
除非处理的数据太多而无法放入内存,否则请使用johnmachin的方法将数据解析为元素,并使用
lxml.etree
来创建实际的XML元素。在相关问题 更多 >
编程相关推荐