• 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 0

    在 PHP 中将 .xsd 文件转换为数组

    Posted by 撒得一地 on 2016年5月23日 in PHP笔记
    国外稳定加速器推荐    Express | Vypr

    PHP 没有直接的函数,像转 XML 文件一样,将 .xsd(XML Schema Definition) 文件转换成相关数组。所以第一步你需要将 .xsd 文件转换为 xml,然后最后成关联数组解析 xml 文件。下面是几个简单的步骤,将.xsd 文件转换成关联数组。下面先使用 PHP 自带的DOMDocument 操作文档,如果你的 PHP 没有开启 DOM 扩展,你要先去安装相应的扩展,然后在 php.ini 配置文件中启动扩展才能使用 DOMDocument 类。

    步骤1:加载 .xsd 文件

    <?php 
    //创建文档实例
    $doc = new DOMDocument(); 
    
    $doc->preserveWhiteSpace = true;
    
    $doc->load('yourfile.xsd');
    ?> 
    

    步骤2:将 .xsd 文件保存为一个 xml 文件

    <?php
    $doc->save('myxml.xml');
    ?>
    

    步骤3:将 xml 内容保存为字符串并删除 xsd 前缀。

    <?php
    $myxmlfile = file_get_contents('myxml.xml');
    $parseObj = str_replace($doc->lastChild->prefix.':',"",$myxmlfile);
    ?>
    

    最后 将 .xsd 文件转换到 xml 文件中,现在我们使用 PHP 的 simplexml_load_string  函数获取数组。

    <?php
    $xml_string= simplexml_load_string($parseObj);
    
    $json = json_encode($ob);
    
    $data = json_decode($json, true);
    
    print_r($data);
    ?>
    

    备注:在 stackoverflow 上看到有人提问,摘抄了回答者的代码,仅供参考:

    提问者:我需要使用 PHP 将.xsd 文件转换成 数组。我要从用户端动态的获取 xsd 文件,然后用 PHP 对这些内容生成数组。

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xs:schema xmlns:xs="//www.w3.org/2001/XMLSchema">

    <xs:element name="shiporder">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="orderperson" type="xs:string"/>
          <xs:element name="shipto">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="address" type="xs:string"/>
                <xs:element name="city" type="xs:string"/>
                <xs:element name="country" type="xs:string"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="item" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="title" type="xs:string"/>
                <xs:element name="note" type="xs:string" minOccurs="0"/>
                <xs:element name="quantity" type="xs:positiveInteger"/>
                <xs:element name="price" type="xs:decimal"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="orderid" type="xs:string" use="required"/>
      </xs:complexType>
    </xs:element>

    </xs:schema>

    回答者1:

    <?php 
    $attributes = array(); 
    
    $xsdstring = "yourfile.xsd"; 
    $XSDDOC = new DOMDocument(); 
    $XSDDOC->preserveWhiteSpace = false; 
    
    if ($XSDDOC->load($xsdstring)) 
    { 
        $xsdpath = new DOMXPath($XSDDOC); 
        $attributeNodes = 
                  $xsdpath-> 
                  query('//xs:simpleType[@name="attributeType"]') 
                  ->item(0); 
    
        foreach ($attributeNodes->childNodes as $attr) 
        { 
            $attributes[ $attr->getAttribute('value') ] = $attr->getAttribute('name'); 
        } 
        unset($xsdpath); 
    } 
    print_r($attributes); 
    ?>
    

    上一篇:

    下一篇:

    相关推荐

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    0 + 6 = ?

    网站地图|广东快乐10分开奖直播

    Copyright © 2015-2019 广东快乐10分开奖直播 All rights reserved.
    闽ICP备15015576号-1,版权所有?psz.

  • 周蓬安.blog的博客—强国博客—人民网 2019-05-10
  • 紫光阁中共中央国家机关工作委员会 2019-05-10
  • 感触名家笔下的端午文化吃香粽原来可以这样文艺 2019-05-09
  • 追梦夺冠游行嘲讽詹皇 百万人面前穿订制T恤羞辱他 2019-04-27
  • 《瘟疫传说》:黑死病恐怖 姐弟在绝望中求生 2019-04-10
  • 陕西国防工业职业技术学院百名大学生志愿者敬老院慰问孤寡老人陕西国防工业职业技术学院百名大学生志愿者敬老院慰问-陕西教育新闻 2019-04-08
  • 西藏拉萨:新家园 新生活 2019-04-08
  • 尊重和保障宗教信仰自由的中国实践 2019-04-06
  • 一敬泯恩仇 俄罗斯队主帅这个动作太暖了 2019-03-20
  • 四大名著剧组首次同台忆往事 经典影视剧如何铸就? 2018-12-07
  • “天眼”凝望 探秘宇宙 2018-12-07
  • 2015.11.6七星彩规律 立博博彩 彩票平台下载 pk10单双预测软件 香港赛马会正版官网 湖南彩票网站 怎么看五分彩走势图 青岛福彩中心 欢乐生肖玩法 海南南国彩票论坛 双色球胆拖投注计算器 澳客网七星彩 14场胜负彩投注 12103期足彩任选9场 北京赛车策略 福彩3d