2015-04-07 2 views
0

Я хотел бы загрузить XML-файл с абсолютным путем. Я попытался сделать это:Загрузить файл xml с XmlDocument

XmlDocument doc = new XmlDocument(); 
doc.Load(@"C:\Users\Accueil\Desktop\TestEDI\ARTest.xml"); 

Но я получаю ошибку:

the character '<', hexadecimal value 0x3c, cannot be included in a name.

+10

Можете ли вы показать свое содержимое файла? Похоже, ваш xml недействителен. –

+0

Имя сообщения об ошибке относится, скорее всего, не к имени файла, а к неправильному имени элемента в файле XML. –

+0

Ошибка, вероятно, происходит из содержимого файла, но поскольку я не могу изменить содержимое, я решил не использовать XmlDocument для чтения и анализа моего xml. – Stan

ответ

0

Попробуйте это:

XmlReader xmlFile; 
FileStream fs = new FileStream("/*YOUR XML FILE PATH*/.xml", FileMode.Open, FileAccess.Read, FileShare.ReadWrite); // Creates a FileStream that will open a specific .xml file you want, read it and then write its data into your program 
xmlFile = XmlReader.Create(fs, new XmlReaderSettings()); // Enables your program to use this newly "created" .xml file 

DataSet ds = new DataSet(); 
ds.ReadXml(xmlFile); // Uses your .xml file as a DataSet, which can then be used as a data source for something you need (e.g.: a DataGridView) 
+0

PS: когда hardcoding путь к файлу, вы всегда должны использовать \\ вместо \, поэтому ваш путь будет выглядеть как "C: \\ Users \\ Accueil \\ Desktop \\ TestEDI \\ ARTest.xml" – AlanC92

+1

В этом в частном случае OP сбрасывает косые черты с помощью префикса '@', поэтому нет необходимости использовать двойные косые черты. –

1

Вы получите эту ошибку, если у вас есть использование < другой, чем как открытый тег элемента xml.

  1. Например, <my<Element> может дать вам эту ошибку, потому что синтаксический анализатор находит второй < в то время как он ожидает, либо часть имени тега для myElement или закрывающий тег >.

  2. Другим примером может быть, что вы хотите использовать < в теле какого-то XML-текст:

    <inequality> Вот пример неравенства: х

Путь избегайте этого, чтобы удостовериться, что все используемые без открытия тегов слова «<» закодированы как proper XML entities, в этом случае это будет &lt;

1

Как Энди сказал, что это выглядит, как будто вы используете недопустимые символы в файле XML ...

Taken from here ...

Это дает сообщение об ошибке:

<message>if salary < 1000 then</message> 

Это нормально:

<message>if salary &lt; 1000 then</message> 

Есть 5 предопределенные ссылки на объекты в XML:

&lt; < less than 
&gt; > greater than 
&amp; & ampersand 
&apos; ' apostrophe 
&quot; " quotation mark 

Примечание: только символы «<» и «&» строго запрещены в XML. Чем больше персонаж, тем законнее, но это хорошая привычка его заменять.

Так заменить эти недопустимые символы или рассмотреть возможность использования CData

Смежные вопросы