Получить атрибут <?xml-stylesheet…?> с PHP

Вопрос:

У меня есть это в XML файле:

<?xml-stylesheet href="../StyleSheets/VDD11.xsl" type="text/xsl"?>

Я хочу получить значение этого атрибута: href="". Я работаю с PHP 5. Я пробовал этот код, но не хочу работать:

function find_XSL_Fiche($file)
{
$xml = new DOMDocument();
$xml->load($file);
echo $file.'<br />';
$searchNode = $xml->getElementsByTagName( "xml-stylesheet" );
$xsl = "";
foreach ($searchNode as $searchNode)
{
$xsl = $searchNode->getAttribute('href');
}
echo $xsl;
return $xsl;
}

В конце я хочу получить ../StyleSheets/VDD11.xsl

Thanx

Лучший ответ:

Это узел инструкции обработки. Вы можете использовать Xpath для его получения:

Получить все узлы команд обработки:
//processing-instruction()

Отфильтровано по названию:
//processing-instruction()[name() = "xml-stylesheet"]

Перенесите первый найденный PI в строку:
string(//processing-instruction()[name() = "xml-stylesheet"])

$dom = new DOMDocument();
$dom->loadXml(
 '<?xml version="1.0"?><?xml-stylesheet href="../StyleSheets/VDD11.xsl" type="text/xsl"?><xml/>'
);
$xpath = new DOMXpath($dom);

var_dump(
  $xpath->evaluate(
    'string(//processing-instruction()[name() = "xml-stylesheet"])'
  )
);

Выход: https://eval.in/171053

string(47) "href="../StyleSheets/VDD11.xsl" type="text/xsl""

Содержание PI – это текст, он не имеет фиксированной структуры. Поэтому вам нужно вручную проанализировать данные из результата с помощью строковых функций или PCRE.

Оцените статью
TechArks.Ru
Добавить комментарий