你好, 我试图解析直接连接到PHP服务器后台的python脚本中的数据。为此,我将接收到的数组转换为JSON,然后在php脚本中将其转换为XML,以便使用file_get_html在另一台服务器上解析它。一切都很好,但是对于标签问题。基本上标签的编号如
<item0></item0><item1></item1>...
如果我使用
foreach($html->find('item') as $element)
我一无所获。
有没有办法解析所有以 item 开头的标签或者至少将所有类型的字符串转换成(即使这样会减慢处理速度,但无论如何......)或者在各个阶段适当地改变php或python中的所有相关字符串名称?
谢谢,Fabrizio
答案 0 :(得分:1)
首先不要将XML加载为HTML。这可以摧毁它。
可以获取以定义的字符串开头的所有标记。
$xml = <<<'XML'
<items>
<item0></item0>
<item1></item1>
</items>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
$nodes = $xpath->evaluate('//*[starts-with(local-name(), "item")]');
foreach ($nodes as $node) {
var_dump($node->getNodePath());
}
但为什么要为这些标签编号?您知道XML允许您拥有具有相同元素名称的兄弟姐妹吗?
<items>
<item>...</item>
<item>...</item>
...
</items>
此结构的Xpath为/items/item
。
或者,如果您希望保留一个以XML格式分组的JSON数组,请使用像_这样的简单名称来表示子元素:
{
"title" : "foo",
"items" : [ 1 , 2, 3 ]
}
<json>
<title>foo</title>
<items>
<_>1</_>
<_>2</_>
<_>3</_>
</items>
</json>
此结构的Xpath为/json/items/*
或特定项目/json/items/*[2]
。
答案 1 :(得分:0)
项目问题已解决。 array_to_xml显然奇怪地调用它生成的标签。直接检查字典时,不存在项标签。