PDA

View Full Version : پشتیبانی از xml



habibvafapour
دوشنبه 18 دی 1391, 10:45 صبح
با سلام
میخواستم بودم PHP از فایل های xml پشتیبانی توابعی میکند؟ یا باید خودمان به وصیله فایل ها یک ساختار برای xml تولید کنیم ؟

متشکرم

dousti_design
دوشنبه 18 دی 1391, 11:01 صبح
بله در زمینه xml parser توابع قدرتمندی داره
رفرنس (http://php.net/manual/en/book.xml.php)
مثال (http://www.criticaldevelopment.net/xml/doc.php)

habibvafapour
دوشنبه 18 دی 1391, 12:30 عصر
اگر داشته باشیم


<param name="cols" type="text" default="1" label="Columns" description="Number of columns" />

<param name="margin" type="text" default="2px" label="Margin" description="Margin between Groups" />

<param name="cat_order" type="list" default="1" label="Cat/Sec Order" description="Categories/Sections ordering options">

<option value="1">By ID</option>

<option value="2">By Title</option>

<option value="3">By Default</option>

<option value="0">Random</option>

</param>

آیا توابع php می تواند این کدها را تشخیص دهند ؟
و یک خروجی html به ما بدهند؟

mohsen_31369
دوشنبه 18 دی 1391, 13:30 عصر
می تونی از کلاس DOMDocument (http://www.w3schools.com/php/php_xml_dom.asp) و یا simpleXML (http://www.w3schools.com/php/php_xml_simplexml.asp) استفاده کنی. فقط برای استفاده از html باید توجه داشته باشی که قواعد dom را رعایت کرده باشی مثلا تگ ها را ببندی و ... برای این کار یک مثال در منوال سایت php بود که برات می ذارم


You may need to save all or part of a DOMDocument as an XHTML-friendly string, something compliant with both XML and HTML 4. Here's the DOMDocument class extended with a saveXHTML method:

<?php

/**
* XHTML Document
*
* Represents an entire XHTML DOM document; serves as the root of the document tree.
*/
class XHTMLDocument extends DOMDocument {

/**
* These tags must always self-terminate. Anything else must never self-terminate.
*
* @var array
*/
public $selfTerminate = array(
'area','base','basefont','br','col','frame','hr',' img','input','link','meta','param'
);

/**
* saveXHTML
*
* Dumps the internal XML tree back into an XHTML-friendly string.
*
* @param DOMNode $node
* Use this parameter to output only a specific node rather than the entire document.
*/
public function saveXHTML(DOMNode $node=null) {

if (!$node) $node = $this->firstChild;

$doc = new DOMDocument('1.0');
$clone = $doc->importNode($node->cloneNode(false), true);
$term = in_array(strtolower($clone->nodeName), $this->selfTerminate);
$inner='';

if (!$term) {
$clone->appendChild(new DOMText(''));
if ($node->childNodes) foreach ($node->childNodes as $child) {
$inner .= $this->saveXHTML($child);
}
}

$doc->appendChild($clone);
$out = $doc->saveXML($clone);

return $term ? substr($out, 0, -2) . ' />' : str_replace('><', ">$inner<", $out);

}

}

?>


یک کلاس خوب برای کار با html تازه دیدم به نام phpQuery. کلاس خوبی و میتونی همانند jQuery به المنت های html دسترسی داشته باشی. کدش توی گوگل کد هست که فعلا کاربرای ایران دسترسی به اون رو ندارن