【问题标题】:Converting xml into php将xml转换成php
【发布时间】:2011-07-20 04:31:22
【问题描述】:

我需要帮助将以下 xml 转换为 php。谁能帮帮我?

PUT /feeds/default/private/full/resource_id/revisions/revision_number

Host: docs.google.com
GData-Version: 3.0
Authorization: <your authorization header here>
Content-Length: 722
Content-Type: application/atom+xml

<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gd='http://schemas.google.com/g/2005'xmlns:docs="http://schemas.google.com/docs/2007" gd:etag="W/"DkIBR3st7ImA9WxNbF0o."">
 <id>https://docs.google.com/feeds/id/resource_id/revisions/1</id>
 <updated>2009-08-17T04:22:10.440Z</updated>
 <app:edited xmlns:app="http://www.w3.or /2007/app">2009-08-06T03:25:07.799Z</app:edited>
 <title>Revision 1</title>
 <content type="text/html" src="https://docs.google.com/feeds/download/document/ Export?docId=doc_id&amp;revision=1"/>
 <link rel="alternate" type="text/html" href="https://docs.google.com/Doc?id=doc_id&amp;revision=1"/>
 <link rel="self" type="application/atom+xml" href="https://docs.google.com/feeds/default/private/full/resource_id/revisions/1"/>
 <author>
  <name>user</name>
  <email>user@gmail.com</email>
 </author>
 <docs:publish value="true"/>
 <docs:publishAuto value="false"/>
</entry>

【问题讨论】:

  • 你想用 PHP 解析它吗?
  • 我想他想用 PHP 做 PUT 请求...?
  • 是的......显然,我不知道如何为
  • 欢迎来到 StackOverflow!read the site FAQthis guide on how to ask good questions。您提出的问题无法回答。
  • 尝试解析它或尝试使用 PHP 准备 XML put 请求是不是很“雅”?如果您尝试解析它,请发布您正在使用的代码以及您在docs:publish 节点遇到的实际问题的描述。

标签: php xml rest gdata-api google-docs


【解决方案1】:

看看标准的 PHP 类 simpleXML:PHP Manual

那里的示例应该可以帮助您弄清楚。

【讨论】:

  • 除非他遇到“命名空间混乱”:-)
【解决方案2】:

想知道怎么做 这部分?

您需要属性的值,而不是标签(为空)。您可以使用数组语法访问属性,例如:

echo $docsnode['value'];

或者您可以使用attributes 方法,例如:

$attrs = $docsnode->attributes();
echo $attrs['value'];

命名空间混淆设置在 ;-)

所以我这么说是对的 &lt;docs:publish value="true"/&gt;echo $docs['publish']

不,这是一个命名空间元素,您必须使用 children 方法或 xpath 来获取那些(除非它们在默认文档命名空间中,但这些节点不是)...

$ns = $xml->getNamespaces();
$docs = $xml->children($ns['docs']);
echo $docs->publish['value'];
echo $docs->publishAuto['value'];

$docs = $xml->xpath('//docs:*');
echo $docs->publish['value'];
echo $docs->publishAuto['value'];

所以你的代码应该是这样的:

$ns = $feed->getNamespaces();

foreach($feed->entries as $entry)
{
  $docs = $entry->children($ns['docs']);
  $result = $docs->publish['value'];
}

【讨论】:

  • 对于 echo $docs['publish'],我说得对吗?
  • 不...不正确publish 不是一个属性,它是一个带有命名空间docs 的标签
  • 如果我需要一个真实值$docs-&gt;publish['value'] = "true"? @prodigitalson:非常感谢您的帮助。 =)
  • 如果您需要实际设置 XML 中的值,那么这将取决于另一端的期望...我会说您最安全的选择是使用 "true" 作为字符串.. . 如果您使用本机布尔值,它们将在某个时候转换为1/0。如果您需要 PHP 中的布尔值,则需要手动评估字符串,如 $result = ($docs-&gt;publish['value'] == 'true'); 或类似
  • 我尝试将这些代码放入其中,但显然它不起作用...
    foreach ($feed-&gt;entries as $entry){$test = $entry-&gt;getNamespaces();$test = $entry-&gt;xpath('//docs:*');$result = $test-&gt;publish['value'];
猜你喜欢
  • 1970-01-01
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 2011-11-29
  • 2011-12-25
  • 2015-09-03
  • 2014-06-20
相关资源
最近更新 更多