• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

PHP解析XML?

我用PHP解析 bpmn生成的XML文件,但是生成的XML文件很复杂,解析出来的有数据丢失

$xmlfile = 'test.xml';
$xmlparser = xml_parser_create();

// 打开文件并读取数据
$fp = fopen($xmlfile, 'r');
$xmldata = fread($fp, 4096);

xml_parse_into_struct($xmlparser,$xmldata,$values);

xml_parser_free($xmlparser);
echo json_encode($values);有数据丢失


也用了递归的方式解析,也有丢失
/对xml文件进行解析
function get_xml_file($filename = 'test.xml'){
    //首先要建一个DOMDocument对象
    $domObject = new DOMDocument();
    //加载test.xml文件
    $domObject->load($filename);
    //返回xml文件的根节点
    $rootObject = $domObject->documentElement;
    //根据跟节点取到xml的结构返回一个数组;
    $array = get_node_array($rootObject);
    //返回xml结构,类型为数组
    return $array;
}
//返回一个xml节点的所以子元素
function get_node_array($node)
{

    //定义数组返回这个xml的结构
    $array = array();
    //判断根节点是否还有属性
    if($node->hasAttributes())
    {
        foreach($node->attributes as $attrabute)
        {
            $array[$attrabute->nodeName]=$attrabute->nodeValue;
        }
    }

    //如果根节点还有子节点
    if($node->hasChildNodes())
    {
        //取到根节点的所有子节点,返回一数组
        $child_array = $node->childNodes;
        //如果只用一个子节点

        if($child_array->length == 1)
        {
            $array[$node->firstChild->nodeName]=$node->firstChild->nodeValue;
        }else
        {
            //开始遍历子节点
            foreach($child_array as $child_item)
            {
                //如果这个节点不是文本节点的话,递归进行遍历
                if($child_item->nodeType != XML_TEXT_NODE)
                {
                    $array[$child_item->nodeName][] = get_node_array($child_item);
                }
            }
        }
    }else
    {
        return $node->nodeValue;
    }
    return $array;
}
print_r(json_encode(get_xml_file('test.xml')));

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

用simplexml

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!