*/
namespace Friendica\Util;
-use Friendica\Core\Logger;
use DOMXPath;
+use Friendica\Core\Logger;
+use Friendica\Core\System;
use SimpleXMLElement;
/**
- * @brief This class contain methods to work with XML data
+ * This class contain methods to work with XML data
*/
class XML
{
/**
- * @brief Creates an XML structure out of a given array
+ * Creates an XML structure out of a given array
*
* @param array $array The array of the XML structure that will be generated
* @param object $xml The createdXML will be returned by reference
}
/**
- * @brief Copies an XML object
+ * Copies an XML object
*
* @param object $source The XML source
* @param object $target The XML target
}
/**
- * @brief Create an XML element
+ * Create an XML element
*
* @param \DOMDocument $doc XML root
* @param string $element XML element name
}
/**
- * @brief Create an XML and append it to the parent object
+ * Create an XML and append it to the parent object
*
* @param \DOMDocument $doc XML root
* @param object $parent parent object
}
/**
- * @brief Convert an XML document to a normalised, case-corrected array
+ * Convert an XML document to a normalised, case-corrected array
* used by webfinger
*
* @param object $xml_element The XML document
}
/**
- * @brief Convert the given XML text to an array in the XML structure.
+ * Convert the given XML text to an array in the XML structure.
*
* Xml::toArray() will convert the given XML text to an array in the XML structure.
* Link: http://www.bin-co.com/php/scripts/xml2array/
}
/**
- * @brief Delete a node in a XML object
+ * Delete a node in a XML object
*
* @param \DOMDocument $doc XML document
* @param string $node Node name
$x = @simplexml_load_string($s);
if (!$x) {
- Logger::log('libxml: parse: error: ' . $s, Logger::DATA);
+ Logger::error('Error(s) while parsing XML string.', ['callstack' => System::callstack()]);
foreach (libxml_get_errors() as $err) {
- Logger::log('libxml: parse: ' . $err->code." at ".$err->line.":".$err->column." : ".$err->message, Logger::DATA);
+ Logger::info('libxml error', ['code' => $err->code, 'position' => $err->line . ":" . $err->column, 'message' => $err->message]);
}
+ Logger::debug('Erroring XML string', ['xml' => $s]);
libxml_clear_errors();
}
return $x;
/**
* escape text ($str) for XML transport
+ *
* @param string $str
* @return string Escaped text.
*/
public static function escape($str)
{
- $buffer = htmlspecialchars($str, ENT_QUOTES, "UTF-8");
+ $buffer = htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
$buffer = trim($buffer);
return $buffer;
/**
* undo an escape
+ *
* @param string $s xml escaped text
* @return string unescaped text
*/
/**
* apply escape() to all values of array $val, recursively
+ *
* @param array $val
- * @return array
+ * @return array|string
*/
public static function arrayEscape($val)
{
if (is_bool($val)) {
- return $val?"true":"false";
+ return $val ? 'true' : 'false';
} elseif (is_array($val)) {
return array_map('XML::arrayEscape', $val);
}
+
return self::escape((string) $val);
}
}