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类的主要内容,如果未能解决你的问题,请参考以下文章

Java jdom解析xml文件带冒号的属性

如何使用 PHP 解析带有冒号标签的 XML 节点

java dom4j生成有前缀节点的 xml,节点类似soapenv:Envelope模样

如何使用包含冒号的属性的xsd.exe? (XML:朗)

简单 XML - 处理节点中的冒号

Java 生成xml 主节点属性问题!