PHP头条
热点:

增加新节点

DOMNode接口包括多个创建新节点和在DOM树中插入节点的方法,如果要创建一个新节点,可以使用createElement或createTextNode方法,然后 ,为了增加一个新节点到DOM树上,可以调用appendChild或insertBefore方法,appendChild方法增加一个新的子节点到特定节点的子节点列表的后面,而 insertBefore方法是在特定节点的前面插入一个节点。

下面是这些方法的原型:

1、DOMElement createElement(string $name [, string $value ]) :这个方法创建了一个DOMElement类的实例,$name参数表示新元素的标签名,$value参数 表示元素的值,你也可以稍后使用DOMElement->nodeValue属性其值。

2、DOMText createTextNode(string $content):这个方法创建了一个DOMText类的实例,$content参数表示新的文本节点的文本内容。

3、DOMNode DOMNode::appendChild(DOMNode $newnode):这个函数扩展了现有子节点末尾$newnode参数,或创建一个新的包括指定节点的子节点列表。

4、DOMNode DOMNode::insertBefore(DOMNode $newnode [,DOMNode $refnode]):这个方法在$refnode节点前插入$newnode参数,如果$refnode节点丢失,新的 节点就添加到节点的子节点列表前。

下面的例子创建了一个<bibliography>节点,并将其追加到节点的末尾:

  1. //创建一个新元素   
  2. $newElement = $dom->createElement('bibliography','Martin Didier, Professional XML');  
  3. //使用appendChild函数将其追加到根节点  
  4. //调用appendChild函数  
  5. appendNewChild($root,$newElement);  
  6. //这个函数追加了一个新的子节点  
  7. function appendNewChild($currentNode, $node)  
  8. {  
  9.    $currentNode->appendChild($node);  

getNodeInfo()函数运行结果

如果你通过getNodeInfo()函数运行得出结果,你将会看到如图2所示的输出。

图- 2 追加的节点:这个图显示了新加的<bibliography>节点和它的内容

下面的例子是在<publisher>节点增加一个<foreword>子节点:

  1. //创建一个新的<foreword>元素  
  2. $newElement = $dom->createElement('foreword',  
  3.    'What I love about this book is that it '.  
  4.    'grew out of just such a process, '.  
  5.    'and shows it on every page.');  
  6. //设置引用节点  
  7. $allContents = $dom->getElementsByTagName('publisher');  
  8. $contents = $allContents->item(0);  
  9. //调用insertNewChild函数   
  10. insertNewChild($contents,$newElement);  
  11. //这个函数插入一个新的子节点作为 $currentNode的第一个子节点  
  12. function insertNewChild($currentNode, $node)  
  13. {  
  14.    $currentNode->insertBefore(  
  15.       $node, $currentNode->firstChild);     

显示新的节点

通过getNodesInfo运行修改后的文档,显示新的节点,如图3所示。

图- 3 插入节点:这张图片显示了在<publisher>节点前插入了<foreward>子节点

节点克隆

克隆一个节点意味着创建一个和当前节点一模一样的节点,克隆节点时使用cloneNode方法。

DOMNode DOMNode::cloneNode([ bool $deep]):创建当前的克隆,$deep参数指定是否要拷贝当前节点的子节点,其默认值是false。下面的示例代码显示克隆 <author>元素,并作为源<author>元素的子节点,图4显示了输出内容:

  1. //设置引用节点  
  2. $author = $root->getElementsByTagName('author')->item(0);  
  3. //调用cloningNode函数  
  4. cloningNode($author);   
  5. //这个函数克隆$currentNode  
  6. function cloningNode($currentNode)  
  7.    {  
  8.       $clonenode = $currentNode -> cloneNode(true);  
  9.       $newnode = $currentNode->appendChild($clonenode);     
  10.    } 

克隆节点

图- 4 克隆节点:克隆<author>子节点并将其放在源<author>节点下,源节点的文本值变成两份了,因为检索节点的文本值时也检索了其子节点的 值


www.phpzy.comtrue/php/17651.htmlTechArticle增加新节点 DOMNode接口包括多个创建新节点和在DOM树中插入节点的方法,如果要创建一个新节点,可以使用createElement或createTextNode方法,然后 ,为了增加一...

相关文章

    暂无相关文章

PHP之友评论

今天推荐