PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.14.6
Independent Analytics – WordPress Analytics Plugin v2.14.6
2.15.5 2.15.4 2.15.3 2.15.2 2.15.1 2.15.0 2.14.10 trunk 1.1 1.10 1.10.1 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.17.1 1.17.2 1.17.3 1.17.4 1.18 1.18.1 1.19.0 1.19.1 1.2 1.20.0 1.21.0 1.22.0 1.22.1 1.23.0 1.23.1 1.24.0 1.24.1 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.28.1 1.28.2 1.28.3 1.29.0 1.3 1.30.0 1.30.1 1.4 1.5 1.6 1.7 1.8 1.9 2.0.0 2.0.1 2.1.4 2.1.5 2.1.6 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.10 2.11.2 2.11.3 2.11.4 2.11.5 2.11.6 2.11.7 2.11.8 2.11.9 2.12.0 2.12.1 2.12.2 2.13.1 2.13.2 2.13.5 2.13.6 2.14.0 2.14.1 2.14.2 2.14.4 2.14.6 2.14.7 2.14.8 2.14.9 2.2.0 2.2.1 2.3.1 2.3.2 2.4.2 2.4.3 2.5.0 2.5.1 2.6.0 2.6.1 2.6.2 2.6.3 2.6.4 2.7.0 2.7.1 2.7.2 2.7.3 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7
independent-analytics / vendor / league / csv / src / XMLConverter.php
independent-analytics / vendor / league / csv / src Last commit date
Polyfill 10 months ago AbstractCsv.php 10 months ago ByteSequence.php 10 months ago CannotInsertRecord.php 10 months ago CharsetConverter.php 10 months ago ColumnConsistency.php 10 months ago EncloseField.php 10 months ago EscapeFormula.php 10 months ago Exception.php 10 months ago HTMLConverter.php 10 months ago Info.php 10 months ago InvalidArgument.php 10 months ago MapIterator.php 10 months ago RFC4180Field.php 10 months ago Reader.php 10 months ago ResultSet.php 10 months ago Statement.php 10 months ago Stream.php 10 months ago SyntaxError.php 10 months ago TabularDataReader.php 10 months ago UnableToProcessCsv.php 10 months ago UnavailableFeature.php 10 months ago UnavailableStream.php 10 months ago Writer.php 10 months ago XMLConverter.php 10 months ago functions.php 10 months ago functions_include.php 10 months ago
XMLConverter.php
177 lines
1 <?php
2
3 /**
4 * League.Csv (https://csv.thephpleague.com)
5 *
6 * (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11 declare (strict_types=1);
12 namespace IAWPSCOPED\League\Csv;
13
14 use DOMAttr;
15 use DOMDocument;
16 use DOMElement;
17 use DOMException;
18 /**
19 * Converts tabular data into a DOMDocument object.
20 * @internal
21 */
22 class XMLConverter
23 {
24 /**
25 * XML Root name.
26 *
27 * @var string
28 */
29 protected $root_name = 'csv';
30 /**
31 * XML Node name.
32 *
33 * @var string
34 */
35 protected $record_name = 'row';
36 /**
37 * XML Item name.
38 *
39 * @var string
40 */
41 protected $field_name = 'cell';
42 /**
43 * XML column attribute name.
44 *
45 * @var string
46 */
47 protected $column_attr = '';
48 /**
49 * XML offset attribute name.
50 *
51 * @var string
52 */
53 protected $offset_attr = '';
54 public static function create() : self
55 {
56 return new self();
57 }
58 /**
59 * DEPRECATION WARNING! This method will be removed in the next major point release.
60 *
61 * @deprecated since version 9.7.0
62 * @see XMLConverter::create()
63 */
64 public function __construct()
65 {
66 }
67 /**
68 * Convert a Record collection into a DOMDocument.
69 */
70 public function convert(iterable $records) : DOMDocument
71 {
72 $doc = new DOMDocument('1.0');
73 $node = $this->import($records, $doc);
74 $doc->appendChild($node);
75 return $doc;
76 }
77 /**
78 * Create a new DOMElement related to the given DOMDocument.
79 *
80 * **DOES NOT** attach to the DOMDocument
81 */
82 public function import(iterable $records, DOMDocument $doc) : DOMElement
83 {
84 $root = $doc->createElement($this->root_name);
85 foreach ($records as $offset => $record) {
86 $node = $this->recordToElement($doc, $record, $offset);
87 $root->appendChild($node);
88 }
89 return $root;
90 }
91 /**
92 * Convert a CSV record into a DOMElement and
93 * adds its offset as DOMElement attribute.
94 */
95 protected function recordToElement(DOMDocument $doc, array $record, int $offset) : DOMElement
96 {
97 $node = $doc->createElement($this->record_name);
98 foreach ($record as $node_name => $value) {
99 $item = $this->fieldToElement($doc, (string) $value, $node_name);
100 $node->appendChild($item);
101 }
102 if ('' !== $this->offset_attr) {
103 $node->setAttribute($this->offset_attr, (string) $offset);
104 }
105 return $node;
106 }
107 /**
108 * Convert Cell to Item.
109 *
110 * Convert the CSV item into a DOMElement and adds the item offset
111 * as attribute to the returned DOMElement
112 *
113 * @param int|string $node_name
114 */
115 protected function fieldToElement(DOMDocument $doc, string $value, $node_name) : DOMElement
116 {
117 $item = $doc->createElement($this->field_name);
118 $item->appendChild($doc->createTextNode($value));
119 if ('' !== $this->column_attr) {
120 $item->setAttribute($this->column_attr, (string) $node_name);
121 }
122 return $item;
123 }
124 /**
125 * XML root element setter.
126 */
127 public function rootElement(string $node_name) : self
128 {
129 $clone = clone $this;
130 $clone->root_name = $this->filterElementName($node_name);
131 return $clone;
132 }
133 /**
134 * Filter XML element name.
135 *
136 * @throws DOMException If the Element name is invalid
137 */
138 protected function filterElementName(string $value) : string
139 {
140 return (new DOMElement($value))->tagName;
141 }
142 /**
143 * XML Record element setter.
144 */
145 public function recordElement(string $node_name, string $record_offset_attribute_name = '') : self
146 {
147 $clone = clone $this;
148 $clone->record_name = $this->filterElementName($node_name);
149 $clone->offset_attr = $this->filterAttributeName($record_offset_attribute_name);
150 return $clone;
151 }
152 /**
153 * Filter XML attribute name.
154 *
155 * @param string $value Element name
156 *
157 * @throws DOMException If the Element attribute name is invalid
158 */
159 protected function filterAttributeName(string $value) : string
160 {
161 if ('' === $value) {
162 return $value;
163 }
164 return (new DOMAttr($value))->name;
165 }
166 /**
167 * XML Field element setter.
168 */
169 public function fieldElement(string $node_name, string $fieldname_attribute_name = '') : self
170 {
171 $clone = clone $this;
172 $clone->field_name = $this->filterElementName($node_name);
173 $clone->column_attr = $this->filterAttributeName($fieldname_attribute_name);
174 return $clone;
175 }
176 }
177