2010-10-22 6 views

Antwort

12

Mit SimpleXML:

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

Ausgang:

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

Seien Sie einfach vorsichtig. Der Wert von $ xml-> file ['path'] ist keine Zeichenkette. Es ist eine Instanz von SimpleXMLElement. – mellowsoon

+2

In der Tat. Es kann Probleme verursachen, wenn man den Wert mit einem anderen String vergleicht, aber man kann diesen Wert vorher in eine Zeichenkette umwandeln '(string) $ xml-> file ['path']' –

+0

Danke Leute, genau das, was ich gesucht habe –

-1

Sie einfache HTML PHP DOM Parser verwenden können Dies ist eine PHP-Bibliothek. http://simplethmdom.sourceforge.net/

+0

Warum eine Bibliothek eines Drittanbieters einführen, wenn die integrierten Funktionen für diese Aufgabe mehr als ausreichend sind? – Phil

+0

Es ist wie jquery, sehr praktisch – Sam

+1

Vorgeschlagene Drittanbieteralternativen zu [SimpleHtmlDom] (http://simplethmdom.sourceforge.net/), die tatsächlich [DOM] verwenden (http://php.net/manual/en/book. dom.php) anstelle von String Parsing: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/de/zend.dom .html), [QueryPath] (http://querypath.org/) und [FluentDom] (http://www.fluentdom.org). – Gordon

10

Um es zu tun mit DOM Sie tun

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

Sie auch mit XPath tun können:

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

Oder als String-Wert direkt:

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

Sie können einzelne holen Knoten auch durch das DOM manuell durchlaufen

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

Markieren Sie diese CW, weil dies schon mehrfach (nur mit verschiedenen Elementen) beantwortet wurde, einschließlich mir, aber ich bin zu faul, das Duplikat zu finden.

Verwandte Themen