Blame view

vendor/yiisoft/multiparser/XmlParser.php 2.25 KB
3c5edb9b   Mihail   edit createAssocA...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  <?php
  /**
   * Created by PhpStorm.
   * User: Cibermag
   * Date: 10.09.2015
   * Time: 17:47
   */
  
  namespace yii\multiparser;
  
  
  class XmlParser implements ParserInterface{
      /** @var экземляр SplFileObject читаемого файла */
      public $file;
      public $node;
  
      public function read()
      {
          $file = $this->file;
          $result = self::xml2array( $file->getPathname() );
          if ( isset($this->node) ) {
              $result = $result[$this->node];
          }
  
642796c8   Mihail   merge with server
25
          DynamicFormHelper::CreateAssocArray($result, \Yii::$app->multiparser->getConfiguration('xml','basic_column'));
3c5edb9b   Mihail   edit createAssocA...
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
          \common\components\CustomVarDamp::dumpAndDie($result);
      }
  
      public function setup()
      {
  
  
      }
  
  
      /**
       * Converts an XML string to a PHP array
       *
       * @uses recursiveXMLToArray()
       * @param string $file_path
       * @return array
       */
      protected static function xml2array( $file_path ) {
  
          try {
              $xml = new \SimpleXMLElement( $file_path, 0, true );
              //\common\components\CustomVarDamp::dumpAndDie($xml->children()->children());
              $result = self::recursiveXMLToArray( $xml );
          } catch(Exception $ex) {
  
              throw $ex;
          }
  
          return $result;
      }
  
      /**
       * Convert a XML string to a PHP array recursively. Do not
       * call this function directly, Please use {@link Convert::xml2array()}
       *
       * @param SimpleXMLElement
       *
       * @return mixed
       */
      protected static function recursiveXMLToArray($xml) {
          if(is_object($xml) && get_class($xml) == 'SimpleXMLElement') {
              $attributes = $xml->attributes();
              foreach($attributes as $k => $v) {
                  if($v) $a[$k] = (string) $v;
              }
              $x = $xml;
              $xml = get_object_vars($xml);
          }
  
          //\common\components\CustomVarDamp::dump($xml);
          if(is_array($xml)) {
              if(count($xml) == 0) return (string) $x; // for CDATA
              foreach($xml as $key => $value) {
                  $r[$key] = self::recursiveXMLToArray($value);
              }
              if(isset($a)) $r['@'] = $a; // Attributes
              return $r;
          }
          //\common\components\CustomVarDamp::dumpAndDie($xml);
          return (string) $xml;
      }
  }