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> |
val245
30.03.18
✎
11:15
Здравствуйте
У нас стоит УТ 11. Настраиваю обмен с сайтом заказами. С сайта выгружается XML файл, но при чтении его в 1с при СтрокаXML = ФайлXML.ПолучитьТекст() русский шрифт почемуто не читается, выходят каракули вроде «Р”Р°С‚Р°Р¤РѕСЂРјРёСЂРѕРІР». Кто сталкивался с такой проблемой? Скорее всего что-то с кодировкой при выгрузке с сайта. Просто когда открываю файл через тхт все нормально читается, а в 1С русский шрифт не читается.
Cyberhawk
30.03.18
✎
11:16
Укажи кодировку в методе чтения
бомболюк
30.03.18
✎
11:18
utf-8 читаешь как ansi. Запости сюда первую строку xml файла.
Волшебник
30.03.18
✎
11:22
ЧтениеXML.КодировкаXML = «UTF-8»
val245
30.03.18
✎
11:30
val245
30.03.18
✎
11:30
<?xml version=»1.0″ encoding=»UTF-8″?>
val245
30.03.18
✎
11:34
Вот фрагмент кода чтения файла
ФайлXML = Новый ТекстовыйДокумент;
ФайлXML.Прочитать(Параметры.ФайлЗагрузки);
СтрокаXML = ФайлXML.ПолучитьТекст();
То есть он читает файл как тектовый документ, а вот при чтении текста из файла почему-то не читается русский шрифт. Когда же я пытаюсь прочесть файл, ыгружаемый 1С, то все нормально читается. Хотя визуально файлы идентичны
Волшебник
30.03.18
✎
11:34
(6) у метода Прочитать есть второй параметр, где можно указать кодировку
val245
30.03.18
✎
11:34
может ли это быть как-то связано с региональными настройками или версиями блокнота?
Cyberhawk
30.03.18
✎
11:37
Баклан какой-то
Cool_Profi
30.03.18
✎
11:38
(8) Блокнот в новых винда по умолчанию читает УТФ.
А ТекстовыйДокумент по умолчанию — в 1251
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
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 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 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
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 файла «много информации» как перед так и после этого фрагмента, оставить только корневой элемент и проверить воспроизводится ли ошибка на таком файле. Если не воспроизводится, то значит дело как раз в удаленной части и нужно разбираться с ней. Если воспроизводится, то у Вас получится минимальный, но при этом полноценный, пример, который можно выложить в вопросе. И на нем уже будет видно в чем именно ошибка.