When working with XML-based applications, developers often need to create XML-encoded data structures. For example, XML state templates based on user input in the Web, server request XML statements, and customer responses based on run-time parameters.
Although the construction of XML data structures is time-consuming, if you use the mature PHP DOM application interface, everything will become straightforward. This article introduces you to the main features of the PHP DOM application interface, demonstrating how to generate a correct XML full file and save it to disk.
Create a document type declaration
Generally, XML declarations are placed at the top of the document. Declaring in PHP is simple: simply instantiate an object of a DOM document class and give it a version number. View Program listing A:
Program List A
Copy CodeThe code is as follows:
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Display document in browser as plain text
Display document in browser as plain text
For readability purposes
Header ("Content-type:text/plain");
Save and display tree
echo $dom->savexml ();
?>
Notice the SaveXML () method of the DOM document object. I'll go into this in more detail later, and now you just need to simply recognize that it is used to output the current snapshot of an XML document to a file or browser. In this case, for readability, I have printed the ASCII text directly to the browser. In real-world applications, the Text/xml header file can be sent to the browser.
If you look at the output in a browser, you can see the following code:
Adding elements and Text nodes
The really powerful feature of XML is the content from its elements and encapsulation. Fortunately, once you initialize a DOM document, a lot of the operations become straightforward. This process consists of the following two steps:
For each element or text node that you want to add, call the createelement () or createTextNode () method of the DOM document object by element name or text content. This creates a new object that corresponds to the element or text node.
By calling the node's AppendChild () method and passing it to the object created in the previous step, and adding the element or text node to the parent node in the XML document tree.
The following example illustrates these 2 steps clearly, see program listing B.
Program Listing B
Copy CodeThe code is as follows:
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Display document in browser as plain text
For readability purposes
Header ("Content-type:text/plain");
Create root element
$root = $dom->createelement ("toppings");
$dom->appendchild ($root);
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create text node
$text = $dom->createtextnode ("pepperoni");
$item->appendchild ($text);
Save and display tree
echo $dom->savexml ();
?>
Here, I first create a name for The root element of the file and causes it to be attributed to the XML header. Then, I built a name called element and causes it to be attributed to the root element. Finally, I created a text node with a value of "pepperoni" and attributed it to Elements. The final result is as follows:
Copy CodeThe code is as follows:
Pepperoni
If you want to add another topping, just create another and add different content, as shown in program listing C.
Program Listing C
Copy CodeThe code is as follows:
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Display document in browser as plain text
For readability purposes
Header ("Content-type:text/plain");
Create root element
$root = $dom->createelement ("toppings");
$dom->appendchild ($root);
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create text node
$text = $dom->createtextnode ("pepperoni");
$item->appendchild ($text);
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create another text node
$text = $dom->createtextnode ("tomato");
$item->appendchild ($text);
Save and display tree
echo $dom->savexml ();
?>
The following is the output after executing program manifest C:
Copy CodeThe code is as follows:
Pepperoni
Tomato
Add Property
By using properties, you can also add appropriate information to the element. For the PHP DOM API, adding attributes takes two steps: first create the node with the name of this property with the CreateAttribute () method of the DOM document object, and then add the document node to the attribute node that owns the property value. See program Listing D.
Program Listing D
Copy CodeThe code is as follows:
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Display document in browser as plain text
For readability purposes
Header ("Content-type:text/plain");
Create root element
$root = $dom->createelement ("toppings");
$dom->appendchild ($root);
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create text node
$text = $dom->createtextnode ("pepperoni");
$item->appendchild ($text);
Create attribute Node
$price = $dom->createattribute ("price");
$item->appendchild ($price);
Create attribute value node
$priceValue = $dom->createtextnode ("4");
$price->appendchild ($priceValue);
Save and display tree
echo $dom->savexml ();
?>
The output is as follows:
Copy CodeThe code is as follows:
Pepperoni
adding CDATA modules and Process Wizards
Although CDATA modules and process wizards are not often used, the PHP API also supports CDATA and process wizards by invoking the Createcdatasection () and Createprocessinginstruction () methods of DOM document objects. , see program List E.
Program List E
Copy CodeThe code is as follows:
Create DOCTYPE
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Display document in browser as plain text
For readability purposes
Header ("Content-type:text/plain");
Create root element
$root = $dom->createelement ("toppings");
$dom->appendchild ($root);
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create text node
$text = $dom->createtextnode ("pepperoni");
$item->appendchild ($text);
Create attribute Node
$price = $dom->createattribute ("price");
$item->appendchild ($price);
Create attribute value node
$priceValue = $dom->createtextnode ("4");
$price->appendchild ($priceValue);
Create CDATA section
$cdata = $dom->createcdatasection ("Customer requests that pizza is sliced into square pieces");
$root->appendchild ($cdata);
Create PI
$pi = $dom->createprocessinginstruction ("pizza", "bake ()");
$root->appendchild ($PI);
Save and display tree
echo $dom->savexml ();
?>
The output is as follows:
Copy CodeThe code is as follows:
Pepperoni
<BR>Customer requests that pizza is sliced into square pieces<BR>
Save Results
Once you have achieved your goal, you can save the results in a file or a variable stored in PHP. You can save the results in a file by calling the Save () method with the file name, and you can store the variables in PHP by calling the SaveXML () method. Please refer to the following example (program listing F):
Program List F
Copy CodeThe code is as follows:
Create DOCTYPE
$dom = new DOMDocument ("1.0");
Create root element
$root = $dom->createelement ("toppings");
$dom->appendchild ($root);
$dom->formatoutput=true;
Create child element
$item = $dom->createelement ("item");
$root->appendchild ($item);
Create text node
$text = $dom->createtextnode ("pepperoni");
$item->appendchild ($text);
Create attribute Node
$price = $dom->createattribute ("price");
$item->appendchild ($price);
Create attribute value node
$priceValue = $dom->createtextnode ("4");
$price->appendchild ($priceValue);
Create CDATA section
$cdata = $dom->createcdatasection ("Customer requests that pizza is
Sliced into square pieces ");
$root->appendchild ($cdata);
Create PI
$pi = $dom->createprocessinginstruction ("pizza", "bake ()");
$root->appendchild ($PI);
Save Tree to File
$dom->save ("Order.xml");
Save Tree to String
$order = $dom->save ("Order.xml");
?>
Here are the actual examples that everyone can test under.
xml.php (Generate XML)
Copy CodeThe code is as follows:
$conn = mysql_connect (' localhost ', ' root ', ' 123456 ') or Die (' Could not connect: '. Mysql_error ());
mysql_select_db (' Vdigital ', $conn) or Die (' can\ ' t use database: '. mysql_error ());
$str = "Select Id,username from the ' admin ' GROUP by ' id ' of ' ORDER by ' id ' ASC ';
$result = mysql_query ($str) or Die ("Invalid query:". Mysql_error ());
if ($result)
{
$xmlDoc = new DOMDocument ();
if (!file_exists ("01.xml")) {
$xmlstr = " ";
$xmlDoc->loadxml ($XMLSTR);
$xmlDoc->save ("01.xml");
}
else {$xmlDoc->load ("01.xml");}
$Root = $xmlDoc->documentelement;
while ($arr = Mysql_fetch_array ($result)) {
$node 1 = $xmlDoc->createelement ("id");
$text = $xmlDoc->createtextnode (iconv ("GB2312", "UTF-8", $arr ["id"]);
$node 1->appendchild ($text);
$node 2 = $xmlDoc->createelement ("name");
$text 2 = $xmlDoc->createtextnode (iconv ("GB2312", "UTF-8", $arr ["username"]);
$node 2->appendchild ($text 2);
$Root->appendchild ($node 1);
$Root->appendchild ($node 2);
$xmlDoc->save ("01.xml");
}
}
Mysql_close ($conn);
?>
test.php (Application test)
Copy CodeThe code is as follows:
$xmlDoc = new DOMDocument ();
$xmlDoc->load ("http://localhost/xml/xml.php");
$x = $xmlDoc->getelementsbytagname (' name ');
for ($i =0; $i <= $x->length-1; $i + +)
{
if (Strpos ($x->item ($i)->nodevalue, "Fang")!==false)
{
echo $x->item ($i)->parentnode->childnodes->item (1)->nodevalue;
}
}
?>
http://www.bkjia.com/PHPjc/320916.html www.bkjia.com true http://www.bkjia.com/PHPjc/320916.html techarticle when working with XML-based applications, developers often need to create XML-encoded data structures. For example, the XML state template based on user input in the Web, the server requests XML statements, and is based on the OP ...