如何使用PHP的DOMparsing器从XML中提取节点属性

我从来没有真正使用过的DOMparsing器,现在我有一个问题。

我将如何去从这个标记中提取URL:

<files> <file path="download/eysjkss.html" title="File Name" /> </files> 

使用simpleXML:

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

输出:

 download/eysjkss.html 

要做到这一点你做的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; } 

或直接作为string值:

 $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,因为这已被多次(只是与不同的元素),包括我,但我懒得find重复的答案。

你可以使用PHP简单的HTML DOMparsing器,这是一个php库。http://simplehtmldom.sourceforge.net/