2011-11-23 108 views
0

使用此代碼:PHP的XML屬性解析

<?xml version="1.0" encoding="ISO-8859-1"?> 
<note> 
<to id="01">Tove</to> 
<from id="02">Jani</from> 
<heading color="#CEAF33">Reminder</heading> 
<body type="small" important="low">Don't forget me this weekend!</body> 
</note> 

回答

1

我不會使用W3的教程。我會用simplexml_load_string到您的字符串加載到一個XML對象,然後遍歷它像這樣:

$notes = simplexml_load_string($xml); 
foreach($notes as $note) 
{ 
    echo $note . "[" . $note->getName() . "]\n"; 
    foreach($note->attributes() as $key => $value) 
    { 
     echo "\t" . $key . '=' . $value . "\n"; 
    } 
    echo "\n"; 
} 

Example(使用您輸入的字符串)

+0

我該如何使用沒有文檔類型的API來做到這一點?我想使用W3Schools教程,因爲這是我從中學到的。我已經準備好了一切,我需要做的就是從API獲取屬性。 – yanike

+0

SimpleXML不需要HTML文檔類型定義,只需要有效的XML(即以''標籤開始幷包含頂級XML節點)。 W3Schools教程麻煩而且效率低下,你應該可以在任何設置中使用它。 – nickb

+0

我使用的api沒有開頭。我如何驗證它?我嘗試使用simplexml_load_file(file.xml,LIBXML_DTDVALID(1));但它不起作用。我真的需要使用代碼來創建一個XML文檔來驗證它嗎? – yanike

1

您: http://www.w3schools.com/php/php_xml_parser_expat.asp

你會如何使用交換機(如果可能的話),爲每一個如果XML文件是這樣獲得的屬性應該使用SimpleXML擴展,它使用起來更加簡單和容易。

從PHP文檔:

<?php 
$string = <<<XML 
<a> 
<foo name="one" game="lonely">1</foo> 
</a> 
XML; 

$xml = simplexml_load_string($string); 
foreach($xml->foo[0]->attributes() as $a => $b) { 
    echo $a,'="',$b,"\"\n"; 
} 
?> 

更多信息請參見http://au2.php.net/manual/en/book.simplexml.php

+0

我怎樣才能做到這一點與沒有一個API有一個文檔類型?我想使用W3Schools教程,因爲這是我從中學到的。我已經準備好了一切,我需要做的就是從API獲取屬性。 – yanike

+0

以下是處理常見XML錯誤的指南。 http://au2.php.net/manual/en/simplexml.examples-errors.php –

+0

此外,我明白你想使用W3Schools教程,但嚴重的是,它完全過時並且需要很長時間才能實現。 SimpleXML旨在改善我們在PHP中遇到的可怕的XML情況。 –