2010-10-22 58 views

回答

12

使用SimpleXML:

$xml = new SimpleXMLElement($xmlstr); 
echo $xml->file['path']."\n"; 

輸出:

http://www.thesite.com/download/eysjkss.zip 
+4

只要小心。 $ xml-> file ['path']的值不是一個字符串。它是SimpleXMLElement的一個實例。 – mellowsoon 2010-10-22 02:28:23

+2

確實。它可能會導致問題時,將值與另一個字符串進行比較,但您可以預先將此值轉換爲字符串'(字符串)$ xml->文件['路徑']' – 2010-10-22 02:40:16

+0

感謝球員,正是我正在尋找 – 2010-10-22 02:49:09

-1

你可以使用PHP簡單的HTML DOM解析器,這是一個php庫.http://simplehtmldom.sourceforge.net/

+0

爲什麼在內置功能足夠完成此任務時引入第三方庫? – Phil 2010-10-22 02:40:49

+0

這就像jquery,非常方便 – Sam 2010-10-22 02:44:23

+1

建議第三方替代[SimpleHtmlDom](http://simplehtmldom.sourceforge.net/),實際使用[DOM](http://php.net/manual/en/book。 dom.php)而不是字符串分析:[phpQuery](http://code.google.com/p/phpquery/),[Zend_Dom](http://framework.zend.com/manual/en/zend.dom .html),[QueryPath](http://querypath.org/)和[FluentDom](http://www.fluentdom.org)。 – Gordon 2010-10-22 10:32:50

10

要與DOM做到這一點,你做

$dom = new DOMDocument; 
$dom->load('file.xml'); 
foreach($dom->getElementsByTagName('file') as $file) { 
    echo $file->getAttribute('path'); 
} 

您還可以使用XPath做到這一點:

$dom = new DOMDocument; 
$dom->load('file.xml'); 
$xPath = new DOMXPath($dom); 
foreach($xPath->evaluate('/files/file/@path') as $path) { 
    echo $path->nodeValue; 
} 

或字符串值直接:

$dom = new DOMDocument; 
$dom->load('file.xml'); 
$xPath = new DOMXPath($dom); 
echo $xPath->evaluate('string(/files/file/@path)'); 

您可以獲取個人節點也可以通過手動遍歷DOM來運行

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = FALSE; 
$dom->load('file.xml'); 
echo $dom->documentElement->firstChild->getAttribute('path'); 

標記此CW,因爲這已被多次(只是與不同的元素),包括我回答,但我懶得找到重複。

相關問題