С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21

Чтение XML файла, используя XMLReader

02.05.2021, 21:59. Показов 4034. Ответов 11

Студворк — интернет-сервис помощи студентам
Мне поставлена задача: загрузить товары поставщика в определенный интернет-магазин.
По ftp-серверу скачиваю два файла: pricat и prodat.
pricat - xml файл, в нём находится некоторая (не вся) информация о товарах поставщика.
prodat - xml файл, заархивированный в zip, в нём находится вся информация о товарах поставщика.
Что делаю я:
Скачиваю на хостинг эти файлы. Извлекаю из архива xml файл, удаляю архив. Так как эти файлы в кодировке "windows-1251", меняю кодировку на "utf-8". После этого пытаюсь спарсить данные и залить их в БД.
В чём проблема:
Одни и те же действия, что с файлом pricat, что с файлом prodat. Только парсер с pricat - работает, а с prodat - нет.
Ниже привожу код парсеров для файлов pricat и prodat, а так же то, что они выводят.

PARSER PRICAT
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
$reader = new XMLReader();
$reader->open('pricat.xml');
 
 
$VendorProdNum = null; // Артикул товара.
$RetailPrice = null; // Базовая цена товара с НДС.
$QTY = null; // Количество товара на складах (остатки).
 
while($reader->read())
{
    if ($reader->nodeType == XMLReader::ELEMENT)
    {
        $text = simplexml_load_string($reader->readOuterXML());
        
        if ($VendorProdNum !== null && $RetailPrice !== null && $QTY !== null)
        {
            $VendorProdNum = null; // Артикул товара.
            $RetailPrice = null; // Базовая цена товара с НДС.
            $QTY = null; // Количество товара на складах (остатки).
        }
        
        switch($text->Name)
        {
        // Артикул товара.
        case VendorProdNum:
            $VendorProdNum = $text->Value;
            #print_r("VendorProdNum -- " . $VendorProdNum . " \n");
            break;
        // Базовая цена товара с НДС.
        case RetailPrice:
            $RetailPrice = $text->Value;
            #print_r("RetailPrice -- " . $RetailPrice . " \n");
            break;
        }
        // Количество товара на складах (остатки).
        if($text->QTY) 
        {
            $QTY = $text->QTY;
            #print("QTY -- " . $QTY  . " \n");   
        }
}
Этот скрипт работает, выводит это (обрезанная версия):
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
QTY -- 36.0000 
RetailPrice -- 73.2 
VendorProdNum -- 1005168 
QTY -- 44.0000 
RetailPrice -- 33 
VendorProdNum -- 1009791 
QTY -- 24.0000 
RetailPrice -- 33 
VendorProdNum -- 1009784 
QTY -- 330.0000 
RetailPrice -- 735.6 
VendorProdNum -- 01782 
QTY -- 4.0000 
RetailPrice -- 291.6 
VendorProdNum -- 01410 
QTY -- 307.0000 
RetailPrice -- 667.2 
VendorProdNum -- 010521 
QTY -- 78.0000 
RetailPrice -- 356.4 
VendorProdNum -- CKK-40D-KR125-K01 
QTY -- .0000 
RetailPrice -- 397.2 
VendorProdNum -- 030804
PARSER PRODAT
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$reader = new XMLReader();
$reader->open('prodat.xml');
 
while($reader->read())
{
    if ($reader->nodeType == XMLReader::ELEMENT)
    {
        $text = simplexml_load_string($reader->readOuterXML());
        // Добавил для проверки.
        echo $text->FeatureValue . "\n";
    }
    else //($reader->nodeType !== XMLReader::ELEMENT)
    {
        // Добавил для проверки.
        echo "NE ELEMENT \n";
    }
}
if ($reader->read() === false) 
{
    // Добавил для проверки.
    echo "NO READ";
}
?>
В итоге этот скрипт выводит это:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
NE ELEMENT 
 
NE ELEMENT 
 
NE ELEMENT 
 
NE ELEMENT 
.75
NE ELEMENT
Так же обрезанная версия.

Прикладываю к теме два образца (как выглядит pricat и prodat документы - сильно обрезанные):
PRICAT
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
<DocDetail>
<EAN>04690601023360</EAN>
<SenderPrdCode>274949</SenderPrdCode>
<ReceiverPrdCode>256258</ReceiverPrdCode>
<ProductName>Çàãëóøêà òîðöåâàÿ äëÿ ïðîôèëÿ PAL 1919 ñêâîçíàÿ JazzWay 1009791</ProductName>
<UOM>PCE</UOM>
<ItemsPerUnit>1</ItemsPerUnit>
<QTY>44.0000</QTY>
<Price2>0.00</Price2>
<OriginCountry></OriginCountry>
<DocDetailOptions>
<DocOption>
<Name>ProductGroup</Name>
<Value>Òîðöåâàÿ çàãëóøêà êàáåëüíîãî êàíàëà</Value>
</DocOption>
<DocOption>
<Name>Brand</Name>
<Value>JazzWay</Value>
</DocOption>
<DocOption>
<Name>SubBrand</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Variaty</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>FunctionName</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Depth</Name>
<Value>0.036667</Value>
</DocOption>
<DocOption>
<Name>DepthUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Width</Name>
<Value>0.01675</Value>
</DocOption>
<DocOption>
<Name>WidthUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Height</Name>
<Value>0.0075</Value>
</DocOption>
<DocOption>
<Name>HeightUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Volume</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>VolumeUnit</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Currency</Name>
<Value>rub</Value>
</DocOption>
<DocOption>
<Name>Weight</Name>
<Value>0.00142</Value>
</DocOption>
<DocOption>
<Name>WeightUnit</Name>
<Value>KGM</Value>
</DocOption>
<DocOption>
<Name>BestBeforDate</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>RetailPrice</Name>
<Value>33</Value>
</DocOption>
<DocOption>
<Name>RetailCurrency</Name>
<Value>rub</Value>
</DocOption>
<DocOption>
<Name>PartnerQTY</Name>
<Value>986</Value>
</DocOption>
<DocOption>
<Name>PartnerUOM</Name>
<Value>PCE</Value>
</DocOption>
<DocOption>
<Name>LastUpdDate</Name>
<Value>17.04.2021</Value>
</DocOption>
<DocOption>
<Name>CustPrice</Name>
<Value>0.00</Value>
</DocOption>
<DocOption>
<Name>VendorProdNum</Name>
<Value>1009791</Value>
</DocOption>
</DocDetailOptions>
</DocDetail><DocDetail>
<EAN>04690601023346</EAN>
<SenderPrdCode>272604</SenderPrdCode>
<ReceiverPrdCode>237132</ReceiverPrdCode>
<ProductName>Çàãëóøêà òîðöåâàÿ äëÿ ïðîôèëÿ PAL 1919 ãëóõàÿ JazzWay 1009784</ProductName>
<UOM>PCE</UOM>
<ItemsPerUnit>1</ItemsPerUnit>
<QTY>24.0000</QTY>
<Price2>0.00</Price2>
<OriginCountry></OriginCountry>
<DocDetailOptions>
<DocOption>
<Name>ProductGroup</Name>
<Value>Òîðöåâàÿ çàãëóøêà êàáåëüíîãî êàíàëà</Value>
</DocOption>
<DocOption>
<Name>Brand</Name>
<Value>JazzWay</Value>
</DocOption>
<DocOption>
<Name>SubBrand</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Variaty</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>FunctionName</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Depth</Name>
<Value>0.036</Value>
</DocOption>
<DocOption>
<Name>DepthUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Width</Name>
<Value>0.0205</Value>
</DocOption>
<DocOption>
<Name>WidthUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Height</Name>
<Value>0.01825</Value>
</DocOption>
<DocOption>
<Name>HeightUnit</Name>
<Value>MTR</Value>
</DocOption>
<DocOption>
<Name>Volume</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>VolumeUnit</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>Currency</Name>
<Value>rub</Value>
</DocOption>
<DocOption>
<Name>Weight</Name>
<Value>0.0084</Value>
</DocOption>
<DocOption>
<Name>WeightUnit</Name>
<Value>KGM</Value>
</DocOption>
<DocOption>
<Name>BestBeforDate</Name>
<Value></Value>
</DocOption>
<DocOption>
<Name>RetailPrice</Name>
<Value>33</Value>
</DocOption>
<DocOption>
<Name>RetailCurrency</Name>
<Value>rub</Value>
</DocOption>
<DocOption>
<Name>PartnerQTY</Name>
<Value>1687</Value>
</DocOption>
<DocOption>
<Name>PartnerUOM</Name>
<Value>PCE</Value>
</DocOption>
<DocOption>
<Name>LastUpdDate</Name>
<Value>17.04.2021</Value>
</DocOption>
<DocOption>
<Name>CustPrice</Name>
<Value>0.00</Value>
</DocOption>
<DocOption>
<Name>VendorProdNum</Name>
<Value>1009784</Value>
</DocOption>
</DocDetailOptions>
</DocDetail>
PRODAT
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
<DocDetail>
<EAN>
<Value>04670004710807</Value>
<Description>Штрих код ед.изд.</Description>
</EAN>
<SenderPrdCode>155780</SenderPrdCode>
<ReceiverPrdCode />
<ProductName>Скоба крепежная прямая с гвоздем d5мм NCS-05-50 (уп.50шт) Navigator 71080</ProductName>
<ProductStatus>Активно</ProductStatus>
<UOM>NMP</UOM>
<ItemsPerUnit>50</ItemsPerUnit>
<Multiplicity>1</Multiplicity>
<ParentProdCode>EG000010</ParentProdCode>
<ParentProdGroup>Материал монтажный</ParentProdGroup>
<ProductCode>EC000363</ProductCode>
<ProductGroup>Скоба с гвоздем</ProductGroup>
<VendorProdNum>71080</VendorProdNum>
<Brand>NAVIGATOR</Brand>
<Weight>
<WeightUnit>KGM</WeightUnit>
<Value>0.0225</Value>
</Weight>
<Dimension>
<DimensionUnit>MTR</DimensionUnit>
<Depth>0.117</Depth>
<Width>0.051</Width>
<Height>0.011</Height>
</Dimension>
<RelatedProd />
<Analog />
<FeatureETIMDetails>
<FeatureETIM>
<FeatureCode>EF000007</FeatureCode>
<FeatureName>Цвет</FeatureName>
<FeatureValue>Светло-серый</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000051</FeatureCode>
<FeatureName>Форма</FeatureName>
<FeatureValue>Прямоугольная (для плоского кабеля)</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000139</FeatureCode>
<FeatureName>Поверхность</FeatureName>
<FeatureValue>Необработанная</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000370</FeatureCode>
<FeatureName>С гвоздем</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000371</FeatureCode>
<FeatureName>Длина гвоздя</FeatureName>
<FeatureValue>10</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF001249</FeatureCode>
<FeatureName>Закаленный стальной гвоздь</FeatureName>
<FeatureValue>Да</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002169</FeatureCode>
<FeatureName>Материал</FeatureName>
<FeatureValue>Пластик</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002348</FeatureCode>
<FeatureName>Подходит для диаметра с</FeatureName>
<FeatureValue>5</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002348_1</FeatureCode>
<FeatureName>Подходит для диаметра по</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004565</FeatureCode>
<FeatureName>Диаметр отверстия</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004620</FeatureCode>
<FeatureName>Диаметр с</FeatureName>
<FeatureValue>5</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004620_1</FeatureCode>
<FeatureName>Диаметр по</FeatureName>
<FeatureValue>1.7</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004706</FeatureCode>
<FeatureName>Для плоского кабеля</FeatureName>
<FeatureValue>2x5 мм</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004778</FeatureCode>
<FeatureName>Высота наружной части</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF005107</FeatureCode>
<FeatureName>Диаметр гвоздя</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF006531</FeatureCode>
<FeatureName>Двойной зажим</FeatureName>
<FeatureValue>Нет</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF006532</FeatureCode>
<FeatureName>В комплекте с гвоздем</FeatureName>
<FeatureValue>Да</FeatureValue>
<FeatureUom />
</FeatureETIM>
</FeatureETIMDetails>
<Image>
<Value>https://rs24.ru/ctlg/edi/80473/710/71080/71080_1.png</Value>
</Image>
<CertificateNum>3300СП</CertificateNum>
<Certificate />
</DocDetail>
<DocDetail>
<EAN>
<Value>04670004710791</Value>
<Description>Штрих код ед.изд.</Description>
</EAN>
<SenderPrdCode>155779</SenderPrdCode>
<ReceiverPrdCode />
<ProductName>Скоба крепежная прямая с гвоздем d4мм NCS-04-50 (уп.50шт) Navigator 71079</ProductName>
<ProductStatus>Активно</ProductStatus>
<UOM>NMP</UOM>
<ItemsPerUnit>50</ItemsPerUnit>
<Multiplicity>1</Multiplicity>
<ParentProdCode>EG000010</ParentProdCode>
<ParentProdGroup>Материал монтажный</ParentProdGroup>
<ProductCode>EC000363</ProductCode>
<ProductGroup>Скоба с гвоздем</ProductGroup>
<VendorProdNum>71079</VendorProdNum>
<Brand>NAVIGATOR</Brand>
<Weight>
<WeightUnit>KGM</WeightUnit>
<Value>0.0203</Value>
</Weight>
<Dimension>
<DimensionUnit>MTR</DimensionUnit>
<Depth>0.118</Depth>
<Width>0.054</Width>
<Height>0.008</Height>
</Dimension>
<RelatedProd />
<Analog />
<FeatureETIMDetails>
<FeatureETIM>
<FeatureCode>EF000007</FeatureCode>
<FeatureName>Цвет</FeatureName>
<FeatureValue>Светло-серый</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000051</FeatureCode>
<FeatureName>Форма</FeatureName>
<FeatureValue>Прямоугольная (для плоского кабеля)</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000139</FeatureCode>
<FeatureName>Поверхность</FeatureName>
<FeatureValue>Необработанная</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000370</FeatureCode>
<FeatureName>С гвоздем</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF000371</FeatureCode>
<FeatureName>Длина гвоздя</FeatureName>
<FeatureValue>8</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF001249</FeatureCode>
<FeatureName>Закаленный стальной гвоздь</FeatureName>
<FeatureValue>Да</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002169</FeatureCode>
<FeatureName>Материал</FeatureName>
<FeatureValue>Пластик</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002348</FeatureCode>
<FeatureName>Подходит для диаметра с</FeatureName>
<FeatureValue>4</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF002348_1</FeatureCode>
<FeatureName>Подходит для диаметра по</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004565</FeatureCode>
<FeatureName>Диаметр отверстия</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004620</FeatureCode>
<FeatureName>Диаметр с</FeatureName>
<FeatureValue>4</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004620_1</FeatureCode>
<FeatureName>Диаметр по</FeatureName>
<FeatureValue>1.7</FeatureValue>
<FeatureUom>мм</FeatureUom>
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004706</FeatureCode>
<FeatureName>Для плоского кабеля</FeatureName>
<FeatureValue>2x5 мм</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF004778</FeatureCode>
<FeatureName>Высота наружной части</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF005107</FeatureCode>
<FeatureName>Диаметр гвоздя</FeatureName>
<FeatureValue />
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF006531</FeatureCode>
<FeatureName>Двойной зажим</FeatureName>
<FeatureValue>Нет</FeatureValue>
<FeatureUom />
</FeatureETIM>
<FeatureETIM>
<FeatureCode>EF006532</FeatureCode>
<FeatureName>В комплекте с гвоздем</FeatureName>
<FeatureValue>Да</FeatureValue>
<FeatureUom />
</FeatureETIM>
</FeatureETIMDetails>
<Image>
<Value>https://rs24.ru/ctlg/edi/80473/710/71079/71079_1.png</Value>
</Image>
<CertificateNum>3300СП</CertificateNum>
<Certificate />
</DocDetail>
Добавлено через 1 минуту
На счёт кодировки PRODAT в приведённом примере - я ошибся файлом, на самом деле там все названия отображены адекватно.

Добавлено через 3 минуты
Мало того, что PARSER PRODAT не видит элементов XML, так ещё он выводит ещё очень мало "НЕ ЭЕЛЕМЕНТОВ".
На самом деле их должно быть кратно больше, чем он выводит, т.к. там > 4.000.000 строк.
Это меня даже больше волнует, чем то, что оно не работает


Добавлено через 2 минуты
Цитата Сообщение от f5d5 Посмотреть сообщение
На счёт кодировки PRODAT в приведённом примере - я ошибся файлом, на самом деле там все названия отображены адекватно.
PRICAT*
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2021, 21:59
Ответы с готовыми решениями:

Как с используя XMLREADER получить значения из строк?
&lt;categories&gt; &lt;category id=&quot;1994&quot; parent_id=&quot;352&quot;&gt;&lt;!]&gt;&lt;/category&gt; &lt;category id=&quot;1993&quot; parent_id=&quot;170&quot;&gt;&lt;!]&gt;&lt;/category&gt; &lt;/categories&gt; ...

Чтение xml файла
Доброго дня всем. Когда загоняю xml в базу MySql иногда обрезаются строки. Например если есть строка где написано &quot;Петя...

Рекурсивное чтение xml файла используя XmlReader
Необходимо получить список всех дочерних элементов в xml, по отношению к родительским, те родительский элемент и список дочерних для него...

11
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
03.05.2021, 13:13
Во-первых, лучше до вызова simplexml_load_string проверять имя элемента (чтобы память не забивать):
PHP
1
2
3
4
if ($reader->nodeType === XMLReader::ELEMENT && 'ElementName' === $reader->name)
{
    # ...
}
ElementName -- имя нужного элемента.

По остальному -- всё работает, проверил с вашим XML-кодом (только обернул все в корневой элемент).
Уберите echo "NE ELEMENT \n";, пропишите условие и тестируйте:
PHP
1
2
3
4
if ($reader->nodeType === XMLReader::ELEMENT && 'FeatureETIM' === $reader->name)
{
    echo $text->FeatureValue . "\n";
}
У меня вывело:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная
 
10
Да
Пластик
5
 
 
5
1.7
2x5 мм
 
 
Нет
Да
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная
 
8
Да
Пластик
4
 
 
4
1.7
2x5 мм
 
 
Нет
Да
0
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21
03.05.2021, 20:51  [ТС]
Para bellum, сама проблема в том, что эта часть кода:
Цитата Сообщение от Para bellum Посмотреть сообщение
$reader->nodeType === XMLReader::ELEMENT
возвращает false, какое бы условие я туда не вставил - код не работает.
Вот, что у меня сейчас:
PHP
1
2
3
4
5
6
7
8
9
10
11
$reader = new XMLReader();
$reader->open('./resources/aton-24_prodat.xml');
 
while($reader->read())
{
    if ($reader->nodeType === XMLReader::ELEMENT && 'FeatureETIM' === $reader->name)
    {
        echo $text->FeatureValue . "\n";
    }
    if ($reader->nodeType !== XMLReader::ELEMENT) echo "NE ELEMENT \n";
}
И так же выводит "NE ELEMENT".
Я что-то сделал не так?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
04.05.2021, 11:55
Цитата Сообщение от f5d5 Посмотреть сообщение
И так же выводит "NE ELEMENT".
Уберите это условие, чтобы вывод кучи "NE ELEMENT" не мешало видеть то, что вывелось.
В документе много "не элементов" и не нужно на этом заострять внимание.
Теперь пошагово:
1) Беру XML-код "PRODAT" из вашего первого сообщения, оборачиваю его в тег <root></root> (обратите на это внимание) и сохраняю в файл test.xml
2) Рядом с файлом test.xml создаю PHP-файл со следующим кодом:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
$reader = new XMLReader();
$reader->open(__DIR__ . '/test.xml');
 
while($reader->read())
{
    if ($reader->nodeType === XMLReader::ELEMENT && 'FeatureETIM' === $reader->name)
    {
        $text = simplexml_load_string($reader->readOuterXML());
 
        echo $text->FeatureValue . "\n";
    }
    
}
При запуске выводит:
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная

10
Да
Пластик
5


5
1.7
2x5 мм


Нет
Да
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная

8
Да
Пластик
4


4
1.7
2x5 мм


Нет
Да
0
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21
04.05.2021, 23:52  [ТС]
Para bellum, сейчас нашел некую закономерность.
У меня полный документ начинается с:
XML
1
<?xml version="1.0" encoding="windows-1251"?><Document><DocType>PRODAT</DocType><SenderGln>4607166859881</SenderGln><ReceiverGln>4607081908881</ReceiverGln><Currency>RUB</Currency><DocumentNumber>657930881</DocumentNumber><DocumentDate>20210221</DocumentDate>
И когда эта строчка существует в файле, последующие объекты будто теряются.
Но стоит убрать эту строчку, так выводится:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
.75
Поливинилхлорид (PVC)
Цвет
В соответствии с EN 60332-3-24
450
Нет (без)
Медный голый
Нет (без)
1 - однопроволочная
Нет
Нет (без)
-15
-40
65
Нет
1
70
1.88
Да
Можете что-нибудь посоветовать?
Просто с файлом pricat такой проблемы не было,а в prodat почему-то появилась.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.05.2021, 07:02
Протестируйте код в том виде, в каком я тестирую.
test.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
<?xml version="1.0" encoding="windows-1251"?>
<Document>
   <DocType>PRODAT</DocType>
   <SenderGln>4607166859881</SenderGln>
   <ReceiverGln>4607081908881</ReceiverGln>
   <Currency>RUB</Currency>
   <DocumentNumber>657930881</DocumentNumber>
   <DocumentDate>20210221</DocumentDate>
   <DocDetail>
      <EAN>
         <Value>04670004710807</Value>
         <Description>Штрих код ед.изд.</Description>
      </EAN>
      <SenderPrdCode>155780</SenderPrdCode>
      <ReceiverPrdCode />
      <ProductName>Скоба крепежная прямая с гвоздем d5мм NCS-05-50 (уп.50шт) Navigator 71080</ProductName>
      <ProductStatus>Активно</ProductStatus>
      <UOM>NMP</UOM>
      <ItemsPerUnit>50</ItemsPerUnit>
      <Multiplicity>1</Multiplicity>
      <ParentProdCode>EG000010</ParentProdCode>
      <ParentProdGroup>Материал монтажный</ParentProdGroup>
      <ProductCode>EC000363</ProductCode>
      <ProductGroup>Скоба с гвоздем</ProductGroup>
      <VendorProdNum>71080</VendorProdNum>
      <Brand>NAVIGATOR</Brand>
      <Weight>
         <WeightUnit>KGM</WeightUnit>
         <Value>0.0225</Value>
      </Weight>
      <Dimension>
         <DimensionUnit>MTR</DimensionUnit>
         <Depth>0.117</Depth>
         <Width>0.051</Width>
         <Height>0.011</Height>
      </Dimension>
      <RelatedProd />
      <Analog />
      <FeatureETIMDetails>
         <FeatureETIM>
            <FeatureCode>EF000007</FeatureCode>
            <FeatureName>Цвет</FeatureName>
            <FeatureValue>Светло-серый</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000051</FeatureCode>
            <FeatureName>Форма</FeatureName>
            <FeatureValue>Прямоугольная (для плоского кабеля)</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000139</FeatureCode>
            <FeatureName>Поверхность</FeatureName>
            <FeatureValue>Необработанная</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000370</FeatureCode>
            <FeatureName>С гвоздем</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000371</FeatureCode>
            <FeatureName>Длина гвоздя</FeatureName>
            <FeatureValue>10</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF001249</FeatureCode>
            <FeatureName>Закаленный стальной гвоздь</FeatureName>
            <FeatureValue>Да</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002169</FeatureCode>
            <FeatureName>Материал</FeatureName>
            <FeatureValue>Пластик</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002348</FeatureCode>
            <FeatureName>Подходит для диаметра с</FeatureName>
            <FeatureValue>5</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002348_1</FeatureCode>
            <FeatureName>Подходит для диаметра по</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004565</FeatureCode>
            <FeatureName>Диаметр отверстия</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004620</FeatureCode>
            <FeatureName>Диаметр с</FeatureName>
            <FeatureValue>5</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004620_1</FeatureCode>
            <FeatureName>Диаметр по</FeatureName>
            <FeatureValue>1.7</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004706</FeatureCode>
            <FeatureName>Для плоского кабеля</FeatureName>
            <FeatureValue>2x5 мм</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004778</FeatureCode>
            <FeatureName>Высота наружной части</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF005107</FeatureCode>
            <FeatureName>Диаметр гвоздя</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF006531</FeatureCode>
            <FeatureName>Двойной зажим</FeatureName>
            <FeatureValue>Нет</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF006532</FeatureCode>
            <FeatureName>В комплекте с гвоздем</FeatureName>
            <FeatureValue>Да</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
      </FeatureETIMDetails>
      <Image>
         <Value>https://rs24.ru/ctlg/edi/80473/710/71080/71080_1.png</Value>
      </Image>
      <CertificateNum>3300СП</CertificateNum>
      <Certificate />
   </DocDetail>
   <DocDetail>
      <EAN>
         <Value>04670004710791</Value>
         <Description>Штрих код ед.изд.</Description>
      </EAN>
      <SenderPrdCode>155779</SenderPrdCode>
      <ReceiverPrdCode />
      <ProductName>Скоба крепежная прямая с гвоздем d4мм NCS-04-50 (уп.50шт) Navigator 71079</ProductName>
      <ProductStatus>Активно</ProductStatus>
      <UOM>NMP</UOM>
      <ItemsPerUnit>50</ItemsPerUnit>
      <Multiplicity>1</Multiplicity>
      <ParentProdCode>EG000010</ParentProdCode>
      <ParentProdGroup>Материал монтажный</ParentProdGroup>
      <ProductCode>EC000363</ProductCode>
      <ProductGroup>Скоба с гвоздем</ProductGroup>
      <VendorProdNum>71079</VendorProdNum>
      <Brand>NAVIGATOR</Brand>
      <Weight>
         <WeightUnit>KGM</WeightUnit>
         <Value>0.0203</Value>
      </Weight>
      <Dimension>
         <DimensionUnit>MTR</DimensionUnit>
         <Depth>0.118</Depth>
         <Width>0.054</Width>
         <Height>0.008</Height>
      </Dimension>
      <RelatedProd />
      <Analog />
      <FeatureETIMDetails>
         <FeatureETIM>
            <FeatureCode>EF000007</FeatureCode>
            <FeatureName>Цвет</FeatureName>
            <FeatureValue>Светло-серый</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000051</FeatureCode>
            <FeatureName>Форма</FeatureName>
            <FeatureValue>Прямоугольная (для плоского кабеля)</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000139</FeatureCode>
            <FeatureName>Поверхность</FeatureName>
            <FeatureValue>Необработанная</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000370</FeatureCode>
            <FeatureName>С гвоздем</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF000371</FeatureCode>
            <FeatureName>Длина гвоздя</FeatureName>
            <FeatureValue>8</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF001249</FeatureCode>
            <FeatureName>Закаленный стальной гвоздь</FeatureName>
            <FeatureValue>Да</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002169</FeatureCode>
            <FeatureName>Материал</FeatureName>
            <FeatureValue>Пластик</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002348</FeatureCode>
            <FeatureName>Подходит для диаметра с</FeatureName>
            <FeatureValue>4</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF002348_1</FeatureCode>
            <FeatureName>Подходит для диаметра по</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004565</FeatureCode>
            <FeatureName>Диаметр отверстия</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004620</FeatureCode>
            <FeatureName>Диаметр с</FeatureName>
            <FeatureValue>4</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004620_1</FeatureCode>
            <FeatureName>Диаметр по</FeatureName>
            <FeatureValue>1.7</FeatureValue>
            <FeatureUom>мм</FeatureUom>
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004706</FeatureCode>
            <FeatureName>Для плоского кабеля</FeatureName>
            <FeatureValue>2x5 мм</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF004778</FeatureCode>
            <FeatureName>Высота наружной части</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF005107</FeatureCode>
            <FeatureName>Диаметр гвоздя</FeatureName>
            <FeatureValue />
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF006531</FeatureCode>
            <FeatureName>Двойной зажим</FeatureName>
            <FeatureValue>Нет</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
         <FeatureETIM>
            <FeatureCode>EF006532</FeatureCode>
            <FeatureName>В комплекте с гвоздем</FeatureName>
            <FeatureValue>Да</FeatureValue>
            <FeatureUom />
         </FeatureETIM>
      </FeatureETIMDetails>
      <Image>
         <Value>https://rs24.ru/ctlg/edi/80473/710/71079/71079_1.png</Value>
      </Image>
      <CertificateNum>3300СП</CertificateNum>
      <Certificate />
   </DocDetail>
</Document>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
 
$reader = new XMLReader();
$reader->open(__DIR__ . '/test.xml');
 
while($reader->read())
{
    if ($reader->nodeType === XMLReader::ELEMENT && 'FeatureETIM' === $reader->name)
    {
        $text = simplexml_load_string($reader->readOuterXML());
 
        echo $text->FeatureValue . "\n";
    }
    
}
Вывод у вас, как и у меня, такой?
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная
 
10
Да
Пластик
5
 
 
5
1.7
2x5 мм
 
 
Нет
Да
Светло-серый
Прямоугольная (для плоского кабеля)
Необработанная
 
8
Да
Пластик
4
 
 
4
1.7
2x5 мм
 
 
Нет
Да
Проверьте, как обстоят дела с кодировками. Включите вывод всех ошибок в PHP.
Я не могу воспроизвести ошибку. У меня, как видите, выводится. PHP 8 использую
0
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21
05.05.2021, 13:16  [ТС]
Para bellum, да, у меня выводится то же, что и у вас.
Но как поступить с целым файлом?
С целым файлом этот код не работает, а с частью - без проблем.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.05.2021, 13:53
Не знаю даже. Я могу протестировать скрипт только с теми данными, которые вы предоставили.
Гадать смысла нет.
0
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21
05.05.2021, 17:08  [ТС]
Para bellum, если у вас будет свободное время, пожалуйста, протестируйте свой код на этом xml документе (он находится в архиве).
Это действительно важно, спасибо.
Вложения
Тип файла: rar prodat.rar (1.64 Мб, 6 просмотров)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.05.2021, 17:48
Лучший ответ Сообщение было отмечено f5d5 как решение

Решение

Да, возникает ошибка.
Но тут причина на поверхности. Я уже говорил:
Цитата Сообщение от Para bellum Посмотреть сообщение
Проверьте, как обстоят дела с кодировками.
Выполняю в Linux команду:
Code
1
file -i aton-24_prodat.xml
Мне выдаёт:
Code
1
aton-24_prodat.xml: text/xml; charset=utf-8
А в начале файла у вас другая кодировка указана:
Code
1
encoding="windows-1251"
Парсер пытается считать файл как windows-1251, а на самом деле там UTF-8. Вот он и спотыкается.

После принудительной перекодировки файла в windows-1251 (или же при изменении в файле windows-1251 на utf-8) скрипт отрабатывает штатно.
1
0 / 0 / 0
Регистрация: 02.05.2021
Сообщений: 21
05.05.2021, 19:48  [ТС]
Para bellum, странно, с pricat такой проблемы не было, хотя я делал точно так же.
Есть ли способ спарсить данные из документа на windows-1251, чтобы в конечном итоге они были перекодированы в utf-8?
Первое что приходит на ум: спарсить в windows-1251, после чего сохранить результат парсинга в другой документ и уже спарсить новый документ чисто построчно. Может быть посоветуете вариант лучше?)
Просто БД в utf-8.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
06.05.2021, 07:49
Цитата Сообщение от f5d5 Посмотреть сообщение
с pricat такой проблемы не было, хотя я делал точно так же
Там с кодировками нет конфликта, значит.

А зачем вы решили эту перекодировку делать (при этом оставляя заголовок encoding="windows-1251" нетронутым.)? В документации написано:
Важно отметить, что библиотека libxml внутри использует кодировку UTF-8 и, таким образом, кодировка извлекаемого содержимого всегда будет в кодировке UTF-8.
Т.е. нет смысла в ручной перекодировке. Сохраняйте файл в том виде, в каком вам его присылает поставщик. Считает его в UTF-8.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.05.2021, 07:49
Помогаю со студенческими работами здесь

Чтение XML данных (XMLReader)
Есть xml файл и в нем есть блок ... &lt;users&gt; &lt;user id=&quot;1&quot; value1=&quot;afaaf&quot; value2=&quot;racad&quot; value3=&quot;xarcd&quot;&gt;User1&lt;/user&gt; &lt;user...

Отобразить весь xml файл используя XMLreader
нужно существующий xml файл распарсить на открывающийся теги, их содержимое и соответственно закрывающиеся теги и отобразить это все, но...

Прочитать данные из XML файла с помощью xmlreader
Помогите, как прочитать эту структуру xmlreader'ом? &lt;result1 ball=&quot;1&quot;&gt;1&lt;/result1&gt; &lt;result2...

Чтение XML файла, без использования встроенных средств работы с XML
Разработать программу на любом из перечисленных языков программирования c#. Программа должна читать XML-файл. Разбирать элементы не...

XmlReader: считать значение из xml и вывести на экран
Здравствуйте.Столкнулся с маленькой проблемой. Мне нужно считать значение из xml и вывести но экран. Вот так делаю XmlReader reader =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru