2011-03-22 4 views
0

Мне нужна помощь в преобразовании следующего xml в php. Кто-нибудь может мне помочь?Преобразование 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>[email protected]</email> 
</author> 
<docs:publish value="true"/> 
<docs:publishAuto value="false"/> 
</entry> 
+0

Вы хотите, чтобы разобрать его с PH П? – alex

+0

Я думаю, он хочет сделать запрос PUT с PHP ...? – prodigitalson

+3

/rename SO to jeopardy – zerkms

ответ

1

Посмотрите на стандартный PHP класс SimpleXML: PHP Manual

примеры должны помочь вам понять это.

+1

за исключением случаев, когда он сталкивается с «путаницей пространства имен» :-) – prodigitalson

+0

уверен ... спасибо @jorg =) –

0

как насчет идеи, как это сделать для этой части?

Требуется значение атрибута, а не тега (который пуст). Вы можете получить доступ атрибутов с синтаксисом массива, например:

echo $docsnode['value'];

или вы можете использовать attributes метод, как:

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

И путаница имен множеств в ;-)

поэтому я могу сказать, что для <docs:publish value="true"/>echo $docs['publish']

Неа вот пространство имен elemtn вы должны получить на тех, кто использует метод 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']; 
} 
+0

так я права сказать, что для 'echo $ docs [ 'publish'] ' –

+0

Нет ... thats not correct' publish' не является атрибутом его тега с пространством имен 'docs' – prodigitalson

+0

, так как я должен это делать? –