2010-10-22 43 views

Trả lời

12

Sử dụng SimpleXML:

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

Output:

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

Hãy cẩn thận. Giá trị của $ xml-> file ['path'] không phải là một chuỗi. Đó là một ví dụ của SimpleXMLElement. – mellowsoon

+2

Thật vậy. Nó có thể gây ra vấn đề khi so sánh giá trị với một chuỗi khác nhưng bạn có thể truyền giá trị này thành chuỗi trước (string) $ xml-> file ['path'] ' –

+0

cảm ơn guys, chính xác cái tôi đang tìm kiếm –

-1

bạn có thể sử dụng PHP HTML đơn giản DOM Parser , đây là thư viện php。http: //simplehtmldom.sourceforge.net/

+0

Tại sao nên giới thiệu thư viện của bên thứ ba khi các tính năng được tích hợp sẵn hơn mức phù hợp cho tác vụ này? – Phil

+0

Nó giống như jquery, Rất thuận tiện – Sam

+1

Các lựa chọn thay thế của bên thứ ba được đề xuất cho [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) thực sự sử dụng [DOM] (http://php.net/manual/en/book. dom.php) thay vì String Parsing: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/zend.dom .html), [QueryPath] (http://querypath.org/) và [FluentDom] (http://www.fluentdom.org). – Gordon

10

Để làm điều đó với DOM bạn làm

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

Bạn cũng có thể làm điều đó với XPath:

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

Hoặc như một giá trị chuỗi trực tiếp:

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

Bạn có thể lấy cá nhân các nút cũng bằng cách di chuyển DOM theo cách thủ công

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

Đánh dấu CW này, bởi vì điều này đã được trả lời trước nhiều lần (chỉ với các yếu tố khác nhau), bao gồm cả tôi, nhưng tôi quá lười để tìm bản sao.

Các vấn đề liên quan