Начинаю ненавидеть libxml …

AnrDaemon

Продвинутый новичок
Приспичило перебрать и организовать библиотеку…
За. Дол. Бал. Ся.
PHP:
  $xml = simplexml_load_file($book);

  $xml->registerXPathNamespace('ns', $xml->getNamespaces(true)['']);
  $ti = $xml->xpath('/ns:FictionBook/ns:description/ns:title-info')[0];
  $author = trim($ti->author->{'last-name'}) . ' ' . trim($ti->author->{'first-name'});
  $fname = iconv('UTF-8', null, sprintf('%03u. %s. %s.fb2', $ta['id'], $author, trim($ti->{'book-title'})));
И никак иначе. XPath 1.0 не имеет концепта "default NS"…
 

AnrDaemon

Продвинутый новичок
А самое замечательное, что после каждого ->xpath NS надо регистрировать заново!
Иначе последующие запросы пойдут в молоко.
PHP:
$xml->registerXPathNamespace('ns', $xml->getNamespaces(true)['']);
$list = $xml->xpath('/soap:Envelope/soap:Body/ns:SoapResponse/ns:Item');
foreach ($list as $node) {
    $node->registerXPathNamespace('ns', $node->getNamespaces(true)['']);
    $keys = $node->xpath('./ns:Variant/text()');
    // …
}
 
Последнее редактирование:
Сверху