本文整理汇总了PHP中DOMNode::isSameNode方法的典型用法代码示例。如果您正苦于以下问题:PHP DOMNode::isSameNode方法的具体用法?PHP DOMNode::isSameNode怎么用?PHP DOMNode::isSameNode使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DOMNode
的用法示例。
在下文中一共展示了DOMNode::isSameNode方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: switch
public function &appendNode(DOMNode &$a_tag)
{
switch ($this->m_node->nodeType) {
case XML_DOCUMENT_NODE:
$node = $this->m_node->isSameNode($a_tag->ownerDocument) ? $a_tag : $this->m_node->importNode($a_tag, true);
$this->m_node->appendChild($a_tag);
return $this;
case XML_ELEMENT_NODE:
$node = $this->m_node->ownerDocument->isSameNode($a_tag->ownerDocument) ? $a_tag : $this->m_node->ownerDocument->importNode($a_tag, true);
$this->m_node->appendChild($node);
return $this;
}
return $this;
}
示例2: insertNode
protected function insertNode(DOMNode $tmp, DOMNode $node, $mode)
{
if ($mode === 'before' || $mode === 'after') {
if ($node instanceof DOMText || $node instanceof DOMElement || $node instanceof DOMDocumentFragment) {
if ($tmp->isSameNode($tmp->ownerDocument->documentElement)) {
throw new BadMethodCallException('Cannot insert a ' . get_class($node) . ' node outside of the root node');
}
}
if ($mode === 'before') {
return $tmp->parentNode->insertBefore($node, $tmp);
}
if ($tmp->nextSibling) {
return $tmp->parentNode->insertBefore($node, $tmp->nextSibling);
}
return $tmp->parentNode->appendChild($node);
}
return $tmp->appendChild($node);
}
示例3: createXPath
/**
* Create XPath
*
* @param \DOMNode $node
* @return string
*/
protected function createXPath(\DOMNode $node)
{
$parentXPath = '';
$currentXPath = $node->getNodePath();
if ($node->parentNode !== null && !$node->isSameNode($node->parentNode)) {
$parentXPath = $this->createXPath($node->parentNode);
$pathParts = explode('/', $currentXPath);
$currentXPath = '/' . end($pathParts);
}
$attributesXPath = '';
if ($node->hasAttributes()) {
$attributes = [];
foreach ($node->attributes as $name => $attribute) {
if ($this->isIdAttribute($name)) {
$attributes[] = sprintf('@%s="%s"', $name, $attribute->value);
break;
}
}
if (!empty($attributes)) {
if (substr($currentXPath, -1) === ']') {
$currentXPath = substr($currentXPath, 0, strrpos($currentXPath, '['));
}
$attributesXPath = '[' . implode(' and ', $attributes) . ']';
}
}
return '/' . trim($parentXPath . $currentXPath . $attributesXPath, '/');
}
示例4: drawThumbnailZone
/**
* Draw a final layout zone on its thumbnail.
*
* @access private
*
* @param ressource $thumbnail The thumbnail ressource
* @param DOMNode $node The current node zone
* @param array $clip The clip rect to draw
* @param int $background The background color
* @param int $gridcolumn The number of columns in the grid
* @param boolean $lastChild True if the current node is the last child of its parent node
*
* @return int The new X axis position;
*/
private function drawThumbnailZone(&$thumbnail, $node, $clip, $background, $gridcolumn, $lastChild = false)
{
$x = $clip[0];
$y = $clip[1];
$width = $clip[2];
$height = $clip[3];
if (null !== ($spansize = preg_replace('/[^0-9]+/', '', $node->getAttribute('class')))) {
$width = floor($width * $spansize / $gridcolumn);
}
if (false !== strpos($node->getAttribute('class'), 'Child')) {
$height = floor($height / 2);
}
if (!$node->hasChildNodes()) {
$this->drawRect($thumbnail, array($x, $y, $width, $height), $background, $width == $clip[2] || strpos($node->getAttribute('class'), 'hChild'), $lastChild);
return $width + 2;
}
foreach ($node->childNodes as $child) {
if (is_a($child, 'DOMText')) {
continue;
}
if ('clear' == $child->getAttribute('class')) {
$x = $clip[0];
$y = $clip[1] + floor($height / 2) + 2;
continue;
}
$x += $this->drawThumbnailZone($thumbnail, $child, array($x, $y, $clip[2], $height), $background, $gridcolumn, $node->isSameNode($node->parentNode->lastChild));
}
return $x + $width - 2;
}
示例5: nodeIndex
private function nodeIndex(DOMNode $n)
{
$cnt = 0;
foreach ($n->parentNode->childNodes as $n2) {
if ($n->isSameNode($n2)) {
return $cnt;
}
$cnt++;
}
return false;
}