Ошибка при чтении файла 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
<?xml version="1.0" encoding="UTF-8"?>
<report>
    <eeprom version="ENHANCED PBB/ЂB cor/dens v10.12" datetime=""></eeprom>
    <sn>015.15.01.002</sn>
    <file path="\internal\analog.tar" type="tar">
        <point>
            <x>-11,0000000</x>
            <y>1,6000000</y>
        </point>
        <point>
            <x>-0,0500000</x>
            <y>0,0000000</y>
        </point>
    </file>
    <file path="\external\density.cor" type="cor">
        <surface>
            <a0>94,5305710</a0>
            <a1>-0,0142365</a1>
            <a2>-0,0043975</a2>
            <a11>-0,0000980</a11>
            <a22>0,0001461</a22>
            <a12>-0,0000220</a12>
            <p>1,0000000</p>
        </surface>
        <surface>
            <a0>-266,8311768</a0>
            <a1>-3,8060381</a1>
            <a2>1,8994861</a2>
            <a11>0,0000000</a11>
            <a22>0,0000000</a22>
            <a12>0,0000000</a12>
            <p>3,0000000</p>
        </surface>
        <surface>
            <a0>0,0000000</a0>
            <a1>0,0000000</a1>
            <a2>0,0000000</a2>
            <a11>-0,0004314</a11>
            <a22>0,0000001</a22>
            <a12>0,0000000</a12>
            <p>6,0000000</p>
        </surface>
        <surface>
            <a0>-13,4954958</a0>
            <a1>0,0428321</a1>
            <a2>-0,0312684</a2>
            <a11>0,0000000</a11>
            <a22>0,0000000</a22>
            <a12>0,0000000</a12>
            <p>7,0000000</p>
        </surface>
        <surface>
            <a0>1000,0000000</a0>
            <a1>0,0000000</a1>
            <a2>100,0000000</a2>
            <a11>0,1000000</a11>
            <a22>10,0000000</a22>
            <a12>0,1000000</a12>
            <p>5,0000000</p>
        </surface>
    </file>
    <file path="\internal\pressure.tar" type="tar">
        <point>
            <x>2360,0000000</x>
            <y>0,0000000</y>
        </point>
        <point>
            <x>3532,0000000</x>
            <y>58,4000015</y>
        </point>
        <point>
            <x>4547,0000000</x>
            <y>103,8000031</y>
        </point>
        <point>
            <x>5764,0000000</x>
            <y>158,6999969</y>
        </point>
        <point>
            <x>6877,0000000</x>
            <y>209,0000000</y>
        </point>
        <point>
            <x>7900,0000000</x>
            <y>255,1999969</y>
        </point>
        <point>
            <x>8982,0000000</x>
            <y>304,0000000</y>
        </point>
        <point>
            <x>10074,0000000</x>
            <y>352,7999878</y>
        </point>
        <point>
            <x>11149,0000000</x>
            <y>400,8999939</y>
        </point>
    </file>
    <file path="\external\density.tar" type="tar">
        <point>
            <x>0,8943808</x>
            <y>0,0000000</y>
        </point>
        <point>
            <x>1,0004297</x>
            <y>1,0000000</y>
        </point>
        <point>
            <x>1,0124259</x>
            <y>1,1160001</y>
        </point>
        <point>
            <x>1,0233793</x>
            <y>1,2240000</y>
        </point>
        <point>
            <x>1,0292079</x>
            <y>1,2840000</y>
        </point>
        <point>
            <x>1,0409085</x>
            <y>1,4030000</y>
        </point>
        <point>
            <x>1,0498325</x>
            <y>1,4930000</y>
        </point>
        <point>
            <x>1,0583036</x>
            <y>1,5800000</y>
        </point>
        <point>
            <x>1,0686287</x>
            <y>1,6900001</y>
        </point>
        <point>
            <x>1,0780404</x>
            <y>1,7860010</y>
        </point>
        <point>
            <x>1,0865008</x>
            <y>1,8940001</y>
        </point>
        <point>
            <x>1,0918074</x>
            <y>1,9540000</y>
        </point>
    </file>
    <file path="\external\coriol.tar" type="tar">
        <point>
            <x>0,0000000</x>
            <y>0,0000000</y>
        </point>
        <point>
            <x>1,0423599</x>
            <y>8,8731651</y>
        </point>
    </file>
    <file path="\external\rotate.tar" type="tar">
        <point>
            <x>0,2771824</x>
            <y>0,0000000</y>
        </point>
        <point>
            <x>51,5987129</x>
            <y>-0,8832195</y>
        </point>
        <point>
            <x>102,9263687</x>
            <y>-2,8315117</y>
        </point>
        <point>
            <x>161,3097382</x>
            <y>-4,0044746</y>
        </point>
        <point>
            <x>203,9690857</x>
            <y>-3,2529044</y>
        </point>
        <point>
            <x>250,3599396</x>
            <y>-4,8435221</y>
        </point>
        <point>
            <x>302,4907227</x>
            <y>-6,9018602</y>
        </point>
        <point>
            <x>351,8223267</x>
            <y>-5,4620886</y>
        </point>
        <point>
            <x>396,1837158</x>
            <y>-6,5484858</y>
        </point>
    </file>
    <file path="\internal\rgr.tar" type="tar">
        <point>
            <x>1,0000000</x>
            <y>0,0000000</y>
        </point>
        <point>
            <x>1,1160051</x>
            <y>-7,7440825</y>
        </point>
        <point>
            <x>1,2240053</x>
            <y>-4,7421026</y>
        </point>
        <point>
            <x>1,2839999</x>
            <y>-1,4837382</y>
        </point>
        <point>
            <x>1,4029999</x>
            <y>0,6799557</y>
        </point>
        <point>
            <x>1,4930004</x>
            <y>3,0734160</y>
        </point>
        <point>
            <x>1,5800005</x>
            <y>4,8079190</y>
        </point>
        <point>
            <x>1,6899979</x>
            <y>6,9035168</y>
        </point>
        <point>
            <x>1,7860079</x>
            <y>7,7395725</y>
        </point>
        <point>
            <x>1,8939825</x>
            <y>9,9293804</y>
        </point>
        <point>
            <x>1,9540000</x>
            <y>8,4871855</y>
        </point>
    </file>
    <file path="\internal\CorKRoP.tar" type="tar">
        <point>
            <x>0,0000000</x>
            <y>1,0000000</y>
        </point>
        <point>
            <x>1,0000000</x>
            <y>1,0000000</y>
        </point>
    </file>
</report>
Ошибка кодировки при чтении XML файла. ☑ 0

val245

30.03.18

11:15

Здравствуйте

У нас стоит УТ 11. Настраиваю обмен с сайтом заказами. С сайта выгружается XML файл, но при чтении его в 1с при СтрокаXML = ФайлXML.ПолучитьТекст() русский шрифт почемуто не читается, выходят каракули вроде «Р”Р°С‚Р°Р¤РѕСЂРјРёСЂРѕРІР». Кто сталкивался с такой проблемой? Скорее всего что-то с кодировкой при выгрузке с сайта. Просто когда открываю файл через тхт все нормально читается, а в 1С русский шрифт не читается.

1

Cyberhawk

30.03.18

11:16

Укажи кодировку в методе чтения

2

бомболюк

30.03.18

11:18

utf-8 читаешь как ansi. Запости сюда первую строку xml файла.

3

Волшебник

30.03.18

11:22

ЧтениеXML.КодировкаXML = «UTF-8»

4

val245

30.03.18

11:30

5

val245

30.03.18

11:30

<?xml version=»1.0″ encoding=»UTF-8″?>

6

val245

30.03.18

11:34

Вот фрагмент кода чтения файла

ФайлXML = Новый ТекстовыйДокумент;

ФайлXML.Прочитать(Параметры.ФайлЗагрузки);

СтрокаXML = ФайлXML.ПолучитьТекст();

То есть он читает файл как тектовый документ, а вот при чтении текста из файла почему-то не читается русский шрифт. Когда же я пытаюсь прочесть файл, ыгружаемый 1С, то все нормально читается. Хотя визуально файлы идентичны

7

Волшебник

30.03.18

11:34

(6) у метода Прочитать есть второй параметр, где можно указать кодировку

8

val245

30.03.18

11:34

может ли это быть как-то связано с региональными настройками или версиями блокнота?

9

Cyberhawk

30.03.18

11:37

Баклан какой-то

10

Cool_Profi

30.03.18

11:38

(8) Блокнот в новых винда по умолчанию читает УТФ.

А ТекстовыйДокумент по умолчанию — в 1251

11

val245

30.03.18

11:46

Да, при чтении файла с параметром кодировки

ФайлXML.Прочитать(Параметры.ФайлЗагрузки, КодировкаТекста.UTF8);

файл начал читаться нормально. Это стандартный код был, при стандартном обмене заказами…

Ошибка при чтении XML файла: причины, возможные решения и лучшие практики

XML (Extensible Markup Language) — это язык разметки данных, который широко используется для обмена информацией между различными системами. Ошибка при чтении XML файла может возникнуть по разным причинам, например, из-за неправильного формата XML, отсутствующих или поврежденных данных, проблем в кодировке, некорректных ссылок на схему и других.

В этой статье мы рассмотрим основные причины возникновения ошибок при чтении XML файлов, а также предоставим некоторые советы и лучшие практики для их решения.

1. Неправильный формат XML файла

Одна из основных причин ошибок при чтении XML файла — это отсутствие или нарушение структуры XML, определенной по схеме или DTD (Document Type Definition). Файл может содержать неправильные теги, отсутствующие или повторяющиеся элементы, неправильные атрибуты и т.д. В этом случае XML парсер выдаст ошибку при попытке прочитать такой файл.

Решение: для решения проблем с неправильным форматом XML файла рекомендуется использовать инструменты проверки с помощью схем (XML Schema) или DTD. Эти инструменты могут помочь вам найти нарушения структуры XML и исправить их.

2. Отсутствующие или поврежденные данные

Еще одной причиной ошибки при чтении XML файла может быть отсутствие или повреждение данных, которые необходимо прочитать из файла. Например, если файл содержит ссылки на внешние ресурсы, а эти ресурсы отсутствуют или были изменены, то XML парсер может выбросить ошибку.

Решение: для решения проблем с отсутствующими или поврежденными данными рекомендуется проверить наличие и доступность всех необходимых ресурсов (файлов, URL-адресов и т.д.). Если данные отсутствуют или повреждены, следует обновить или восстановить их.

3. Проблемы с кодировкой

Ошибка при чтении XML файла может возникнуть из-за проблем с кодировкой. XML файлы обычно должны быть корректно закодированы в формате UTF-8 или другой кодировке, указанной в объявлении <?xml …?> в начале файла. Если файл содержит некорректную кодировку или была указана неправильная кодировка, то это может вызвать ошибку при чтении XML файла.

Решение: для решения проблем с кодировкой рекомендуется проверить объявление кодировки в начале файла <?xml …?> и сравнить ее с реальной кодировкой файла. Если кодировка некорректная или не соответствует реальной кодировке файла, следует исправить или обновить объявление кодировки.

4. Некорректные ссылки на схему

Один из распространенных случаев ошибок при чтении XML файлов связан с некорректными ссылками на XML схему. XML схема (XSD) используется для определения структуры и типов данных в XML файле. Если XML файл ссылается на схему, но ссылка некорректна или схема недоступна, то XML парсер выдаст ошибку при чтении файла.

Решение: для решения проблем с некорректными ссылками на схему рекомендуется проверить наличие и доступность схемы, а также правильность ссылок на нее в XML файле. Если схема недоступна или ссылки некорректны, следует обновить или исправить ссылки.

5. Другие причины ошибок

Ошибки при чтении XML файлов могут также возникать по другим причинам, например, из-за ошибок в коде обработки XML, неправильного использования библиотек или инструментов. В этом случае решение проблемы будет зависеть от конкретных обстоятельств и используемых инструментов.

Решение: в случае других причин ошибок рекомендуется проверить код обработки XML, просмотреть документацию по используемым библиотекам и инструментам, а также попытаться выявить причину ошибки с помощью отладки или журналирования (логирования).

В заключение, ошибка при чтении XML файла может быть вызвана различными причинами, такими как неправильный формат XML, отсутствующие или поврежденные данные, проблемы с кодировкой или некорректные ссылки на схему. Для решения этих проблем можно использовать инструменты проверки с помощью схем, проверку доступности данных, проверку кодировки, проверку ссылок на схему и другие методы, зависящие от конкретной ситуации.

i have an XML file like this

     <?xml version="1.0" encoding="utf-8" ?> 
 <conStr>
  <server>192.168.1.25;</server> 
  <initial_catalog>chargdb;</initial_catalog> 
  <uid>sa;</uid> 
  <pwd>1;</pwd> 
  </conStr>

and i’m using this code for fetch data from this file :

        XmlDocument xd = new XmlDocument();
        xd.Load(Application.StartupPath + @"\cng.xml");
        string conStr = string.Empty;
        conStr += "server=";
        conStr +=xd.DocumentElement.ChildNodes[0].Attributes["server"].Value;
        conStr += "initial catalog=";
        conStr += xd.DocumentElement.ChildNodes[0].Attributes["initial_catalog"].Value;
        conStr += "uid=";
        conStr += xd.DocumentElement.ChildNodes[0].Attributes["uid"].Value;
        conStr += "pwd=";
        conStr += xd.DocumentElement.ChildNodes[0].Attributes["pwd"].Value;
        MessageBox.Show(conStr);

but each time i give an error message like this: «Object reference not set to an instance of an object.»
please help me, what can i do to read my file? thanks

asked Sep 18, 2012 at 12:29

ozzy_mra's user avatar

0

Your existing code is looking for attributes within the <server> element. That’s not going to work, as you should be looking for elements within the root element.

I would make two changes:

  • Use LINQ to XML to fetch the values
  • Build the connection string using SqlConnectionStringBuilder instead of as a string

So something like this:

XDocument doc = XDocument.Load(...);
var root = doc.Root;
var builder = new SqlConnectionStringBuilder
{
    DataSource = root.Element("server").Value,
    InitialCatalog = root.Element("initial_catalog").Value,
    UserID = root.Element("uid").Value,
    Password = root.Element("pwd").Value
};
var connectionString = builder.ToString();

answered Sep 18, 2012 at 12:51

Jon Skeet's user avatar

Jon SkeetJon Skeet

1.4m868 gold badges9136 silver badges9198 bronze badges

3

xd.DocumentElement.ChildNodes[0] refers to <conStr> element. You need to look at it’s children.

Consider using XPath to get navigate the document.

answered Sep 18, 2012 at 12:31

Jakub Konecki's user avatar

Jakub KoneckiJakub Konecki

45.6k7 gold badges88 silver badges126 bronze badges

1

To properly answer your question, this is what Jakub means:

        string conStr = string.Empty; 
        conStr += "server=";
        conStr += xd.DocumentElement.SelectSingleNode("./server").InnerText;
        conStr += "initial catalog=";
        conStr += xd.DocumentElement.SelectSingleNode("./initial_catalog").InnerText;
        conStr += "uid=";
        conStr += xd.DocumentElement.SelectSingleNode("./uid").InnerText; 
        conStr += "pwd=";
        conStr += xd.DocumentElement.SelectSingleNode("./pwd").InnerText; 

        MessageBox.Show(conStr); 

And for the record Jakub, xd.DocumentElement.ChildNodes[0], is the root element (‘conStr’)…

answered Sep 18, 2012 at 12:43

JFTxJ's user avatar

JFTxJJFTxJ

5426 silver badges17 bronze badges

1

Точно сказать почему происходит ошибка я не могу, но хочу отметить несколько моментов:

Точка с запятой

У Вас точка с запятой после foreach, уберите ее:

foreach (XmlNode node in cellList); --вот

Из-за нее цикл работает в пустую, а все, что идет после цикла, считается отдельным блоком и к циклу не относится. Соответственно, даже если не будет найдено ни одной ячейки код будет обращаться к cellList[0].

Обычно среда разработки подчеркивает или как-то выделяет лишние символы в таких случаях, обращайте внимание на такие подсказки.

cellList[0] вернет null для пустого списка

Для пустого списка cellList[0] как это ни странно не выкинет исключение, а вернет null, о чем написано в документации XmlNodeList:

The XmlNode with the specified index in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.

Не находятся ячейки

Из вышесказанного следует, что по каким-то причинам SelectNodes возвращает пустой результат. Чтобы мы могли точно определить почему Вам нужно создать воспроизводимый пример, а именно выложить XML-файл на котором ошибка воспроизводится.

Вот фрагмент из xml файла. Перед этим фрагментом много информации с совершенно разными тегами, которые не нужно читать.

В этом случае лучше будет сделать так: удалить из XML файла «много информации» как перед так и после этого фрагмента, оставить только корневой элемент и проверить воспроизводится ли ошибка на таком файле. Если не воспроизводится, то значит дело как раз в удаленной части и нужно разбираться с ней. Если воспроизводится, то у Вас получится минимальный, но при этом полноценный, пример, который можно выложить в вопросе. И на нем уже будет видно в чем именно ошибка.

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка при чтении файла rik
  • Ошибка при чтении файла python
  • Ошибка при чтении файла pdf 14
  • Ошибка при чтении сектора жесткого диска акронис
  • Ошибка при чтении файла coreldraw

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии