Как извлечь атрибут узла из XML с помощью PHP DOM Parser - PullRequest
8 голосов
/ 22 октября 2010

Я никогда раньше не использовал парсер DOM, и теперь у меня есть вопрос.

Как мне извлечь URL из этой разметки:

<files>
    <file path="http://www.thesite.com/download/eysjkss.zip" title="File Name" />
</files>

Ответы [ 3 ]

13 голосов
/ 22 октября 2010

Использование simpleXML:

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

Выход:

http://www.thesite.com/download/eysjkss.zip
11 голосов
/ 22 октября 2010

Чтобы сделать это с 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, потому что на этот вопрос уже отвечали несколько раз (только с разными элементами), включая меня, но мне лень находить дубликат.

0 голосов
/ 22 октября 2010

вы можете использовать PHP Simple HTML DOM Parser, это библиотека php。 http://simplehtmldom.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...