【发布时间】:2013-08-06 09:02:01
【问题描述】:
我基于this answer on SO在python中发送了一条POST消息。完成此操作后,我会从网站上得到如下所示的 XML 表示:
<status>Active</status>
<registeredname>MyTestName</registeredname>
<companyname>TEST</companyname>
<email>mytestemail@gmail.com</email>
<serviceid>8</serviceid>
<productid>1</productid>
<productname>Some Test Product</productname>
<regdate>2013-08-06</regdate>
<nextduedate>0000-00-00</nextduedate>
<billingcycle>One Time</billingcycle>
<validdomain>testing</validdomain>
<validip>XX.XX.XXX.XX</validip>
<validdirectory>/root</validdirectory>
<configoptions></configoptions>
<customfields></customfields>
<addons></addons>
<md5hash>58z9f70a9d738a98b18d0bf4304ac0c6</md5hash>
现在,我想将其转换为以下格式的 python 字典:
{"status": "Active", "registeredname": "MyTestName".......}
我尝试从中移植的相应 PHP 代码如下所示:
preg_match_all('/<(.*?)>([^<]+)<\/\\1>/i', $data, $matches);
我对应的Python代码如下:
matches = {}
matches = re.findall('/<(.*?)>([^<]+)<\/\\1>/i', data)
'data' 是我从服务器接收到的 XML 表示。当我运行它时,我的“匹配”字典仍然是空的。正则表达式语句有问题吗?还是我首先使用re.findall 是错误的?
提前致谢
【问题讨论】:
-
你真的不想用正则表达式来做这件事。这里有很多关于 SO 的答案,它们展示了如何使用像样的 XML 解析器来做到这一点。
-
没有顶级 XML 标记,顺便说一句?这是整个文件吗?
-
是的.. 没有顶级 XML 标记。这是整个文件。所以我猜它本身不是 XML 文档