删除xml标记中的数字

时间:2014-01-24 12:54:49

标签: php python xml json string

你好, 我试图解析直接连接到PHP服务器后台的python脚本中的数据。为此,我将接收到的数组转换为JSON,然后在php脚本中将其转换为XML,以便使用file_get_html在另一台服务器上解析它。一切都很好,但是对于标签问题。基本上标签的编号如

<item0></item0><item1></item1>...

如果我使用

foreach($html->find('item') as $element) 

我一无所获。

有没有办法解析所有以 item 开头的标签或者至少将所有类型的字符串转换成(即使这样会减慢处理速度,但无论如何......)或者在各个阶段适当地改变php或python中的所有相关字符串名称?

谢谢,Fabrizio

2 个答案:

答案 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显然奇怪地调用它生成的标签。直接检查字典时,不存在项标签。