2010-09-01 5 views

ответ

1

Не все методы и функции документированы в Руководстве по PHP еще. Если вы хотите узнать методы класса, вы можете использовать Reflection. Либо сделать

ReflectionClass::export('DOMNode'); 

или из командной строки:

$ php --rc DOMNode 

должен дать что-то вроде:

Class [ <internal:dom> class DOMNode ] { 

    // ... lots of other stuff ... 

    Method [ <internal:dom> public method getNodePath ] { 

     - Parameters [0] { 
     } 
    } 

    // ... lots of other stuff ... 
} 

Если вы сделаете это для DOMDocument, он расскажет вам, где он был унаследован от :

Method [ <internal:dom, inherits DOMNode> public method getNodePath ] { 

    - Parameters [0] { 
    } 
} 

Я не знал эту функцию кстати. Handy! Спасибо, что задали свой вопрос.

0

Вы можете создать свой собственный getNodeXPath() так:

<?php 
/** 
* result sample : /html[1]/body[1]/span[1]/fieldset[1]/div[1] 
* @return string 
*/ 
function getNodeXPath($node) {  
    $result=''; 
    while ($parentNode = $node->parentNode) { 
     $nodeIndex=-1; 
     $nodeTagIndex=0; 
     do { 
      $nodeIndex++; 
      $testNode = $parentNode->childNodes->item($nodeIndex); 

      if ($testNode->nodeName==$node->nodeName and $testNode->parentNode->isSameNode($node->parentNode) and $testNode->childNodes->length>0) { 
       //echo "{$testNode->parentNode->nodeName}-{$testNode->nodeName}-{}<br/>"; 
       $nodeTagIndex++; 
      } 

     } while (!$node->isSameNode($testNode)); 

     $result="/{$node->nodeName}[{$nodeTagIndex}]".$result; 
     $node=$parentNode; 
    }; 
    return $result; 
} 
?> 

Это определяется here.

0

Пример вы связаны указывает, какие объекты имеют этот метод:

 case ($obj instanceof DOMDocument): 
      ... $obj->getNodePath() ... 
      ... 
     case ($obj instanceof DOMElement): 
      ... $obj->getNodePath() ... 
      ... 

Так, DOMDocument и DOMElement экземпляры имеют метод getNodePath(). Тем не менее, я не смог найти какую-либо документацию в официальных документах PHP, но я нашел сообщение в блоге, по-видимому, разработчиком этого метода: http://blog.liip.ch/archive/2006/07/16/added-domnode-getnodepath.html

+0

Спасибо за эту ссылку. Автор подразумевает, что он находится в классе DOMNode. Что подходит, потому что он является родителем DOMDocument и DOMElement. Однако в документах не упоминается getNodePath() http://www.php.net/manual/en/class.domnode.php Так что проблема решена. (Я должен был сказать «класс» в моем вопросе, потому что это то, что я пытался выработать.). –

Смежные вопросы