PluginProbe ʕ •ᴥ•ʔ
Independent Analytics – WordPress Analytics Plugin / 2.15.5
Independent Analytics – WordPress Analytics Plugin v2.15.5
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
AbstractCsv.php 1 month ago ByteSequence.php 1 month ago CannotInsertRecord.php 1 month ago CharsetConverter.php 1 month ago ColumnConsistency.php 1 month ago EncloseField.php 1 month ago EscapeFormula.php 1 month ago Exception.php 10 months ago HTMLConverter.php 1 month ago Info.php 1 month ago InvalidArgument.php 10 months ago MapIterator.php 1 month ago RFC4180Field.php 1 month ago Reader.php 1 month ago ResultSet.php 1 month ago Statement.php 1 month ago Stream.php 1 month ago SyntaxError.php 1 month ago TabularDataReader.php 1 month ago UnableToProcessCsv.php 10 months ago UnavailableFeature.php 10 months ago UnavailableStream.php 10 months ago Writer.php 1 month ago XMLConverter.php 1 month ago functions.php 10 months ago functions_include.php 10 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