PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.1
Independent Analytics – WordPress Analytics Plugin v2.15.1
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
AbstractCsv.php 2 weeks ago ByteSequence.php 2 weeks ago CannotInsertRecord.php 2 weeks ago CharsetConverter.php 2 weeks ago ColumnConsistency.php 2 weeks ago EncloseField.php 2 weeks ago EscapeFormula.php 2 weeks ago Exception.php 9 months ago HTMLConverter.php 2 weeks ago Info.php 2 weeks ago InvalidArgument.php 9 months ago MapIterator.php 2 weeks ago RFC4180Field.php 2 weeks ago Reader.php 2 weeks ago ResultSet.php 2 weeks ago Statement.php 2 weeks ago Stream.php 2 weeks ago SyntaxError.php 2 weeks ago TabularDataReader.php 2 weeks ago UnableToProcessCsv.php 9 months ago UnavailableFeature.php 9 months ago UnavailableStream.php 9 months ago Writer.php 2 weeks ago XMLConverter.php 2 weeks ago functions.php 9 months ago functions_include.php 9 months ago
XMLConverter.php
167 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 protected string $root_name = 'csv';
28 /**
29 * XML Node name.
30 */
31 protected string $record_name = 'row';
32 /**
33 * XML Item name.
34 */
35 protected string $field_name = 'cell';
36 /**
37 * XML column attribute name.
38 */
39 protected string $column_attr = '';
40 /**
41 * XML offset attribute name.
42 */
43 protected string $offset_attr = '';
44 public static function create() : self
45 {
46 return new self();
47 }
48 /**
49 * DEPRECATION WARNING! This method will be removed in the next major point release.
50 *
51 * @deprecated since version 9.7.0
52 * @see XMLConverter::create()
53 */
54 public function __construct()
55 {
56 }
57 /**
58 * Convert a Record collection into a DOMDocument.
59 */
60 public function convert(iterable $records) : DOMDocument
61 {
62 $doc = new DOMDocument('1.0');
63 $node = $this->import($records, $doc);
64 $doc->appendChild($node);
65 return $doc;
66 }
67 /**
68 * Create a new DOMElement related to the given DOMDocument.
69 *
70 * **DOES NOT** attach to the DOMDocument
71 */
72 public function import(iterable $records, DOMDocument $doc) : DOMElement
73 {
74 $root = $doc->createElement($this->root_name);
75 foreach ($records as $offset => $record) {
76 $node = $this->recordToElement($doc, $record, $offset);
77 $root->appendChild($node);
78 }
79 return $root;
80 }
81 /**
82 * Convert a CSV record into a DOMElement and
83 * adds its offset as DOMElement attribute.
84 */
85 protected function recordToElement(DOMDocument $doc, array $record, int $offset) : DOMElement
86 {
87 $node = $doc->createElement($this->record_name);
88 foreach ($record as $node_name => $value) {
89 $item = $this->fieldToElement($doc, (string) $value, $node_name);
90 $node->appendChild($item);
91 }
92 if ('' !== $this->offset_attr) {
93 $node->setAttribute($this->offset_attr, (string) $offset);
94 }
95 return $node;
96 }
97 /**
98 * Convert Cell to Item.
99 *
100 * Convert the CSV item into a DOMElement and adds the item offset
101 * as attribute to the returned DOMElement
102 *
103 * @param int|string $node_name
104 */
105 protected function fieldToElement(DOMDocument $doc, string $value, $node_name) : DOMElement
106 {
107 $item = $doc->createElement($this->field_name);
108 $item->appendChild($doc->createTextNode($value));
109 if ('' !== $this->column_attr) {
110 $item->setAttribute($this->column_attr, (string) $node_name);
111 }
112 return $item;
113 }
114 /**
115 * XML root element setter.
116 */
117 public function rootElement(string $node_name) : self
118 {
119 $clone = clone $this;
120 $clone->root_name = $this->filterElementName($node_name);
121 return $clone;
122 }
123 /**
124 * Filter XML element name.
125 *
126 * @throws DOMException If the Element name is invalid
127 */
128 protected function filterElementName(string $value) : string
129 {
130 return (new DOMElement($value))->tagName;
131 }
132 /**
133 * XML Record element setter.
134 */
135 public function recordElement(string $node_name, string $record_offset_attribute_name = '') : self
136 {
137 $clone = clone $this;
138 $clone->record_name = $this->filterElementName($node_name);
139 $clone->offset_attr = $this->filterAttributeName($record_offset_attribute_name);
140 return $clone;
141 }
142 /**
143 * Filter XML attribute name.
144 *
145 * @param string $value Element name
146 *
147 * @throws DOMException If the Element attribute name is invalid
148 */
149 protected function filterAttributeName(string $value) : string
150 {
151 if ('' === $value) {
152 return $value;
153 }
154 return (new DOMAttr($value))->name;
155 }
156 /**
157 * XML Field element setter.
158 */
159 public function fieldElement(string $node_name, string $fieldname_attribute_name = '') : self
160 {
161 $clone = clone $this;
162 $clone->field_name = $this->filterElementName($node_name);
163 $clone->column_attr = $this->filterAttributeName($fieldname_attribute_name);
164 return $clone;
165 }
166 }
167