好的,这是我目前的情况:
我对 XML 或 lxml 的了解还不是很好,因为到目前为止我很少使用 XML 文件。所以请告诉我我的方法是否真的很愚蠢。;-)
我想使用 Wordpress 导入器为我的 Wordpress 安装提供自定义 XML 文件。默认格式可以在这里看到:XML文件
现在有一些标签看起来像这样
<wp:author>
我不是百分百肯定,但据我今天所知, wp: 标记的一部分是命名空间。
当我尝试使用 lxml 创建这些标签时,我这样做了
author = etree.Element("wp:author")
这导致了一个错误,因为我不允许写 wp:author,而只能写 author。我使用了谷歌,查看了 lxml 网站,并想出了这个:
WP = ElementMaker(namespace="http://wordpress.org/export/1.2/",
"nsmap={'wp' : "http://wordpress.org/export/1.2/"})
author = WP("author")
输出:
<wp:author xmlns:wp="http://wordpress.org/export/1.2/"/>
嗯,更好。正如我今天所学到的,xmlns:wp 属于命名空间的东西。但我不希望出现 xmlns:wp 的东西,因为它不在他们的 XML 文件中。我查看了 Wordpress 本身如何导出他们的内容,他们这样做是这样的:
echo '<wp:author_id>' . $author->ID . '</wp:author_id>';
现在我的问题是,像他们一样做同样的事情会更好,还是我应该坚持使用 lxml,只要有办法在没有 xmlns:wp 的情况下获取标签?使用 lxml 创建 XML 文件似乎是更好的方法,因为它似乎(通常)很容易并且更易于阅读。
我已经尝试过 objectify.deannotate、cleanup_namespace 和类似的建议,但所有这些都不起作用。我希望你们中的一些人有答案,或者建议使用 lxml 解决我的问题,或者说,最好按照 Wordpress 人的方式来做!
如果我忽略了一个已经回答的类似问题,我真的很抱歉,请告诉我。
谢谢你