BizTalk Utilities CV ,   Jobs ,   Code library  
 
Home Page
PHP XML
PHP DOMNode Function hasChildNodes
PHP DOMNode Function hasAttributes
PHP DOMNode Function cloneNode
PHP DOMNodelist Function item
PHP DOMNamedNodeMap Function item
PHP DOMNamedNodeMap Function getNamedItemNS
PHP DOMNamedNodeMap Function getNamedItem
PHP DOMImplementation Function hasFeature
PHP DOMImplementation Function createDocumentType
PHP DOMImplementation Function createDocument
PHP DOMElement Function removeAttributeNS
PHP DOMElement Function removeAttributeNode
PHP DOMElement Function removeAttribute
PHP DOMElement Function hasAttributeNS
PHP DOMElement Function getAttribute
PHP DOMDocument Function getElementsByTagNameNS
PHP DOMDocument Function xinclude
PHP DOMDocument Function validate
PHP DOMDocument Function setAttributeNS
PHP DOMDocument Function setAttribute
 
 

By :Mark Wilson
I am the creator of TopXML. I am available for international and local (Australia) contracts. I am a Solution Architect/Business Analyst. I have worked in IT in several countries (NZ, Australia, South Africa, UK) building and training teams for government and very large non-governmental organizations. I am ex-Microsoft Consulting Services. I wrote the first book on Microsoft XML published in 2000 called XML Programming with VB and ASP. Most recently I have been building tools for the SEO industry. Ask me for a 37 point SEO health-checkup for your website.
First posted :03/24/2008
Times viewed :319

 

DOMNode Function insertBefore

PHP Version: (No version information might be only in CVS. I have used this function in PHP5)

DOM: W3C DOM Level 2

Description

This function adds new child at the end of the children, if only one parameter is passed otherwise add the child before the current child.

Usage:

objectDOMNode->insertBefore ( object newnode [, object refnode])

This function inserts the new node newnode right before the node refnode. The return value is the inserted node. If you plan to do further modifications on the appended child you must use the returned node. If refnode is not supplied then newnode is appended to the children.

Throws DOMException if node cannot be inserted.

PHP Code:

<?php

$xmlstr = <<<XML

<?xml version="1.0" encoding="UTF-8"?>

<company>

<employee>

<employeename id="myId">test1</employeename>

<employeeaddress>testAddress1</employeeaddress>

<SSN>11111</SSN>

<company>XYZ Corporation</company>

</employee>

<employee>

<employeename id="myId1">test1</employeename>

<employeeaddress>testAddress1</employeeaddress>

<SSN>11111</SSN>

<company>ABC Corporation</company>

</employee>

</company>

XML;

$dom = new domDocument;

//load the XML string into the DOM

$dom->loadXML($xmlstr);

//retrieve the first element with name company

$company = $dom->getElementsByTagName('company')->item(0);

//retrieve the first element with name employee

$employee = $dom->getElementsByTagName('employee')->item(0);

//creates a new domXPath object by passing the DOM Document

$xpath = new domXPath($dom);

//create a new query

$query = "//employee";

//execute the xpath query

$xpathQuery = $xpath->query($query);

$size = $xpathQuery->length;

for ($i=0; $i<$size; $i++){

   $node = $xpathQuery->item($i);

   if($i==0){

      //perform the deep cloning for first attribute

      $clonenode = $node->cloneNode(true);

   }else{

      //clone only the node, not its child

      $clonenode = $node->cloneNode(false);

   }

   //create an attribute so that you can know that it is cloned

   $clonenode->setAttribute('cloned',$i);

   //use insertbefore to insert before first employee node.

   $company->insertbefore($clonenode,$employee);

echo "<HTML>";

echo "<Head>";

echo "<title>Example of DOMNode->cloneNode</title>";

echo "<Head>";

echo "<body>";

echo "<PRE>";

echohtmlentities($dom ->saveXML());

echo "</PRE>";

echo "</body>";

echo "</HTML>";

?>

Output:

The expected output would be:

<?xml version="1.0" encoding="UTF-8"?>
<company>
<employee cloned="0">
      <employeename id="myId">test1</employeename>
      <employeeaddress>testAddress1</employeeaddress>
      <SSN>11111</SSN>
      <company>XYZ Corporation</company>
</employee><employee cloned="1"/><employee>
      <employeename id="myId">test1</employeename>
      <employeeaddress>testAddress1</employeeaddress>
      <SSN>11111</SSN>
      <company>XYZ Corporation</company>
</employee>
<employee>
      <employeename id="myId1">test1</employeename>
      <employeeaddress>testAddress1</employeeaddress>
      <SSN>11111</SSN>
      <company>ABC Corporation</company>
</employee>
</company>

Rate this article on a scale of 1 to 10

Your vote :  


 

Recent Jobs

An immediate job opportunity as a B
Software Developers Needed in Charl
Sr. Software Engineer - Analytics
Immediate Mainframe openings for Ch
Immediate TANDEM-TAL openings for C

View all Jobs (Add yours)
View all CV (Add yours)



answering service
conference call
swimming pool builder
soccer drills
water softener
Teleconference
Host Department NOLIMIT Web Hosting
MSN
sunglasses


    Email TopXML  

Front Page Daily Stuff TopXML Forum XML blogs XML Newsgroups BizTalk Biztalk Utilities Biztalk Utilities Tutorial B2B SAP XML Microsoft .NET Dotnet System XML Soapformatter SQLXML XMLserializer XQuery PHP PHP SimpleXML PHP XML Dom PHP XML RPC PHP XSLT Java Java Java XML Xalan Microsoft ASP ASP Schemas XML SQL Server XML XMLDom XSL XSL Tutorial XSLT Stylesheets General Javascript CSS XHTML WAP