php怎么生成带冒号的节点和属性的,xml使用SimpleXMLElement类或其他php类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php怎么生成带冒号的节点和属性的,xml使用SimpleXMLElement类或其他php类相关的知识,希望对你有一定的参考价值。
参考技术A class CXmlUtil/**
* xml文件转化为数组
* Enter description here ...
* @param str $xml
*/
public static function XmlToArray($xml)
return json_decode(json_encode((array) simplexml_load_string($xml)),1);
/**
* 数据转为xml文件
* Enter description here ...
* @param array $data
* @param str $rootNodeName
* @param str $encode
*/
public static function ToXML($data, $rootNodeName = 'root', $encode = 'UTF-8')
$node = null;
foreach($data as $k=>$v)
if(is_numeric($k))
$k = is_object($v)?get_class($v):'value';
$k = preg_replace('/[0-9]*/', '', $k);
$content = '';
if(is_array($v) || (is_object($v) && $v instanceof Traversable))
$content = self::ToXML($v, null);
else
$content = $v?"<![CDATA[".htmlentities($v, null, $encode)."]]>":$v;
$node .= "<$k>$content</$k>";
if($rootNodeName)
return "<?xml version='1.0' encoding='$encode'?><$rootNodeName>$node</$rootNodeName>";
else
return $node;
public static function IsObject($data)
return is_object ( $data );
public static function isArray($data)
return is_array($data);
自己封装的,希望对你有帮组追问
不能这么用吧?你这写的是拼接、最好用原声的simpleX ML解决 行吗
xml带冒号属性怎么获取
参考技术A dom4j 的el.attributeValue是无法取到名空间类型的属性,简单点说就是带冒号的属性。带冒号的属性是与名空间定义有关的,例如
<a xmlns="http://www.w3.org/xxx" xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/xxx http://www.w3.org/xxx.xsd" >
这其中的蓝色部分就是特殊属性。
要取这样的属性在dom4j中应该这样做:
xmlns是名空间Element.getNamespaceURI()可以获得
xmlns:xsi –> Element.getNamespaceForPrefix("xsi").getURI()
xsi:schemaLocation –> el.selectSingleNode("@xsi:schemaLocation").getText() 参考技术B dom4j 的el.attributeValue是无法取到名空间类型的属性,简单点说就是带冒号的属性。
带冒号的属性是与名空间定义有关的,例如
<a xmlns="http://www.w3.org/xxx" xml:lang="en"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/xxx http://www.w3.org/xxx.xsd" >
以上是关于php怎么生成带冒号的节点和属性的,xml使用SimpleXMLElement类或其他php类的主要内容,如果未能解决你的问题,请参考以下文章