本文整理汇总了PHP中DomDocument::normalizeDocument方法的典型用法代码示例。如果您正苦于以下问题:PHP DomDocument::normalizeDocument方法的具体用法?PHP DomDocument::normalizeDocument怎么用?PHP DomDocument::normalizeDocument使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DomDocument
的用法示例。
在下文中一共展示了DomDocument::normalizeDocument方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: GenerarXML
//.........这里部分代码省略.........
if ($conceptos->descripcion != "") {
$NodoConcepto->setAttribute("descripcion", $conceptos->descripcion);
} else {
die('El nodo concepto debe tener una descripción asignada');
}
if ($conceptos->valorunitario > 0) {
$NodoConcepto->setAttribute("valorUnitario", Importe($conceptos->valorunitario));
} else {
die('El nodo valor unitario debe tener asignado un importe');
}
$NodoConcepto->setAttribute("importe", Importe($conceptos->cantidad * $conceptos->valorunitario));
$NodoConceptos->appendChild($NodoConcepto);
$this->subtotal = $this->subtotal + $conceptos->cantidad * $conceptos->valorunitario;
}
}
if (count($this->impuestos) > 0) {
$TotalImpuestosRetenidos = 0;
$TotalImpuestosTrasladados = 0;
$NodoImpuestos = $XMLCFDI->getElementsByTagName('Impuestos')->item(0);
foreach ($this->impuestos as $impuesto) {
if ($impuesto->tipo == _tiRetenido) {
if ($XMLCFDI->getElementsByTagName('cfdi:Retenciones')->length > 0) {
$NodoImpuestosRetenidos = $XMLCFDI->getElementsByTagName('cfdi:Retenciones')->item(0);
} else {
$NodoImpuestosRetenidos = $XMLCFDI->createElement('cfdi:Retenciones');
$NodoImpuestos->appendChild($NodoImpuestosRetenidos);
}
$NodoImpuestoRetenido = $XMLCFDI->createElement('cfdi:Retencion');
if ($impuesto->impuesto != "") {
$NodoImpuestoRetenido->setAttribute('impuesto', $impuesto->impuesto);
} else {
die('El nodo impuesto retenido debe tener un valor en el atributo "impuesto"');
}
// if($impuesto->tasa <> "") {
// $NodoImpuestoRetenido->setAttribute('tasa', Importe($impuesto->tasa));
// }
$NodoImpuestoRetenido->setAttribute('importe', Importe($impuesto->importe));
$NodoImpuestosRetenidos->appendChild($NodoImpuestoRetenido);
$TotalImpuestosRetenidos = $TotalImpuestosRetenidos + $impuesto->importe;
}
if ($TotalImpuestosRetenidos > 0) {
$NodoImpuestos->setAttribute('totalImpuestosRetenidos', Importe($TotalImpuestosRetenidos));
}
}
foreach ($this->impuestos as $impuesto) {
if ($impuesto->tipo == _tiTrasladado) {
if ($XMLCFDI->getElementsByTagName('cfdi:Traslados')->length > 0) {
$NodoImpuestosTrasladados = $XMLCFDI->getElementsByTagName('cfdi:Traslados')->item(0);
} else {
$NodoImpuestosTrasladados = $XMLCFDI->createElement('cfdi:Traslados');
$NodoImpuestos->appendChild($NodoImpuestosTrasladados);
}
$NodoImpuestoTrasladado = $XMLCFDI->createElement('cfdi:Traslado');
if ($impuesto->impuesto != "") {
$NodoImpuestoTrasladado->setAttribute('impuesto', $impuesto->impuesto);
} else {
die('El nodo impuesto trasladado debe tener un valor en el atributo "impuesto"');
}
if ($impuesto->tasa != "") {
$NodoImpuestoTrasladado->setAttribute('tasa', Importe($impuesto->tasa));
}
$NodoImpuestoTrasladado->setAttribute('importe', Importe($impuesto->importe));
$NodoImpuestosTrasladados->appendChild($NodoImpuestoTrasladado);
$TotalImpuestosTrasladados = $TotalImpuestosTrasladados + $impuesto->importe;
}
if ($TotalImpuestosTrasladados > 0) {
$NodoImpuestos->setAttribute('totalImpuestosTrasladados', Importe($TotalImpuestosTrasladados));
}
}
}
if ($this->subtotal > 0) {
$c->setAttribute('subTotal', Importe($this->subtotal));
}
// $descuentosporimpuestos = ($TotalImpuestosRetenidos + $TotalImpuestosTrasladados);
// $descuentosporimpuestos = $TotalImpuestosRetenidos;
$atributo_total = $this->subtotal - $TotalImpuestosRetenidos + $TotalImpuestosTrasladados - $this->descuento;
$c->setAttribute('total', $atributo_total);
$this->FacturaXML = $XMLCFDI->saveXML();
$XMLCFDI->normalizeDocument();
$XMLCFDI->formatOutput = true;
if ($this->XMLSellado) {
// $this->SellarXML_($XMLCFDI);
$this->SellarXML_($this->FacturaXML);
$c = $XMLCFDI->getElementsByTagNameNS('http://www.sat.gob.mx/cfd/3', 'Comprobante')->item(0);
if ($this->sello == '') {
throw new Exception('Ocurrió un error al intentar colocar el sello, no se registró ninguno');
}
if ($this->certificado == '') {
throw new Exception('Ocurrió un error al intentar colocar el certificado, no se registró ninguno');
}
if ($this->numcertificado == '') {
throw new Exception('Ocurrió un error al intentar colocar el número de certificado, no se registró ninguno');
}
$c->setAttribute('sello', $this->sello);
$c->setAttribute('certificado', $this->certificado);
$c->setAttribute('noCertificado', $this->numcertificado);
}
$this->XMLNominaCFDI = $XMLCFDI->saveXML();
return $this->XMLNominaCFDI;
}
示例2: html
public static function html($var, $array = null, $default = '')
{
$var = (string) self::getVal($var, $array, $default);
//$var = Filter::utf8($var);
if (!preg_match('/\\S/', $var)) {
return $default;
}
// corrige les </li>
$var = preg_replace('#>[\\r\\n]+#m', '>', $var);
//ignore error
libxml_use_internal_errors(true);
$dom = new \DomDocument('1.0', 'UTF-8');
$dom->recover = true;
// this is the trick
$var = '<div>' . $var . '</div>';
try {
// hack to preserve UTF-8 characters
//http://stackoverflow.com/questions/3548880/php-dom-utf-8-problem
$dom->loadHTML('<?xml encoding="UTF-8">' . $var);
// hack fix utf-8
$dom->encoding = 'UTF-8';
} catch (\Exception $e) {
}
if (!function_exists('filterHtmlCleanChild')) {
function filterHtmlCleanChild(DOMElement $p, $removeTag, $removeAttr)
{
if ($p->hasChildNodes()) {
foreach ($p->childNodes as $c) {
// on delete ce fils
if (in_array($c->nodeName, $removeTag)) {
$p->removeChild($c);
} elseif ($c->nodeType == XML_ELEMENT_NODE) {
filterHtmlCleanChild($c, $removeTag, $removeAttr);
}
}
}
foreach ($removeAttr as $ra) {
$p->removeAttribute($ra);
/** test
if ( $ra == 'onkeydown' ) {
if ( $va = $p->getAttribute('onkeydown') ) {
$p->removeAttribute($ra);
$rgx = '#*media\{id:([0-9]*)\}*#';
preg_match($rgx, $va, $m);
$r = array();
if ( isset($m[1]) ) { $p->setAttribute($ra,"media{id:".$m[1]."}"); }
}
*/
}
return $p;
}
}
$removeAttr = array('onclick', 'ondblclick', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onunload');
$removeTag = array('script');
foreach ($dom->childNodes as $p) {
if ($p->nodeType == XML_PI_NODE) {
$dom->removeChild($p);
} elseif ($p->hasChildNodes()) {
filterHtmlCleanChild($p, $removeTag, $removeAttr);
}
}
$dom->normalizeDocument();
$r = $dom->saveXML($dom->childNodes->item(1)->childNodes->item(0)->childNodes->item(0), LIBXML_NOEMPTYTAG);
$r = preg_replace('#^<div>#', '', $r);
$var = preg_replace('#</div>$#', '', $r);
// fix certain navigateur compte 2 <br> pour <br></br>, et n'accepte pas les <iframe />
$var = preg_replace('#<br></br>#', '<br />', $var);
return self::setVal($var, $default);
}
示例3: generateXMLFromTestSet
/**
* Génère le XML d'une fonction pour le jeu de test.
* Elle diffère de la fonction generateXMLForPHP dans la mesure où
* generateXMLFromTestSet n'utilise que des tableaux pour la fonction.
*
* @param type $ei_fonction
* @param EiProfil $profile
* @return type
*/
public function generateXMLFromTestSet($ei_fonction, EiProfil $profile)
{
$prefix = MyFunction::getPrefixPath();
// On définit le document.
$dom = new DomDocument("1.0", "utf-8");
$dom->formatOutput = true;
//Génération de l'url du xsl associé à la fonction
$user = $dom->createElement('user');
//$user->setAttribute("xsl", $urlxsl);
$dom->appendChild($user);
$nom_balise_fonction = $dom->createElement('fonction-' . $ei_fonction['function_id'] . '_' . $ei_fonction['function_ref']);
$nom_balise_fonction->setAttribute("name", $ei_fonction['name']);
$user->appendChild($nom_balise_fonction);
//paramètre de la fonction
foreach ($ei_fonction['params'] as $p => $param) {
$nom_balise_param = $dom->createElement($param['name']);
$param_value = $dom->createTextNode($param['valeur']);
$nom_balise_param->appendChild($param_value);
$nom_balise_fonction->appendChild($nom_balise_param);
}
//paramètres de profil
foreach ($profile->getParams() as $param) {
$nom_balise_param = $dom->createElement($param->getStringName());
$param_value = $dom->createTextNode($param->getValue());
$nom_balise_param->appendChild($param_value);
$nom_balise_fonction->appendChild($nom_balise_param);
}
$dom->normalizeDocument();
// renvoie du fichier XML sous forme de chaine de caractères.
return $dom->saveXML();
}
示例4: appendFormattedElement
/**
* Appends data into the XML tree of a Data Source
* @param $wrapper
* @param $data
*/
public function appendFormattedElement(&$wrapper, $data)
{
if (!is_array($data) || empty($data) || empty($data['url'])) {
return;
}
// If cache has expired refresh the data array from parsing the API XML
/*if ((time() - $data['last_updated']) > ($this->_fields['refresh'] * 60)) {
$data = VimeoHelper::updateClipInfo($data['clip_id'], $this->_fields['id'], $wrapper->getAttribute('id'), $this->Database);
}*/
// store a pointer to the driver
// @todo: use the `driver` column
$driver = ServiceDispatcher::getServiceDriver($data['url']);
if ($driver == null) {
throw new Exception('Unable to find driver for url: `' . $data['url'] . '`');
}
$apiFormat = $driver->getAPIFormat();
$parser = ServiceParser::getServiceParser($apiFormat);
if ($parser == null) {
throw new Exception('Unable to find parser for format: `' . $apiFormat . '`');
}
// root for all values
$field = new XMLElement($this->get('element_name'));
$field->setAttributeArray(array('id' => $data['res_id']));
$title = new XMLElement('title', General::sanitize($data['title']));
$title->setAttribute('handle', Lang::createHandle($data['title']));
$field->appendChild($title);
$field->appendChild(new XMLElement('url', General::sanitize($data['url'])));
$field->appendChild(new XMLElement('thumbnail', General::sanitize($data['thumbnail_url'])));
$field->appendChild(new XMLElement('driver', General::sanitize($data['driver'])));
$protocols = new XMLElement('protocols');
if ($driver->supportsSSL()) {
$protocols->appendChild(new XMLElement('item', 'https'));
}
$protocols->appendChild(new XMLElement('item', 'http'));
$field->appendChild($protocols);
// oembed data
$xml = new DomDocument('1.0', 'utf-8');
$errorFlag = false;
// use our parser in order to get the xml string
$xml_data = $parser->createXML($data['oembed_xml'], $driver, $data['url'], $errorFlag);
// if we can successfully load the XML data into the
// DOM object while ignoring errors (@)
if (!$errorFlag && @$xml->loadXML($xml_data)) {
$xml->preserveWhiteSpace = true;
$xml->formatOutput = true;
$xml->normalizeDocument();
$root_name = $driver->getRootTagName();
// get the root node
$xml_root = $xml->getElementsByTagName($root_name)->item(0);
// if we've found a root node
if (!empty($xml_root)) {
// save it as a string
$xml = $xml->saveXML($xml_root);
// replace the 'root' element with 'oembed'
if ($root_name != 'oembed') {
$xml = preg_replace('/^<' . $root_name . '>/', '<oembed>', $xml);
$xml = preg_replace('/<\\/' . $root_name . '>/', '</oembed>', $xml);
}
// set it as the 'value' of the field
// BEWARE: it will be just a string, since the
// value we set is xml. It's just a hack to pass
// the value from the DOMDocument object to the XMLElement
$field->setValue($xml, false);
} else {
$errorFlag = true;
}
} else {
$errorFlag = true;
}
if ($errorFlag) {
// loading the xml string into the DOMDocument did not work
// so we will add a errors message into the result
$error = new XMLElement('error');
$error->setValue(__('Error while loading the xml into the document'));
$field->appendChild($error);
}
$wrapper->appendChild($field);
}