2016-06-03 3 views
0

Я пытаюсь загрузить файл metadata.xml от моей машины, но это дает ошибку, какКак открыть xml с помощью XElement?

The ':' character, hexadecimal value 0x3A, cannot be included in a name.

пожалуйста, дайте мне помочь найти правильный путь для XML нагрузки с использованием XElement.

C# код

private static void xmlProcess() 
     { 

      string filePath = @"D:\metadata.xml"; 
      if (System.IO.File.Exists(filePath)) 
      { 

       // load xml file from destination folder 
       XElement document = new XElement(filePath); 

       var country = "IN"; 
       var curProduct = document.Elements("country").Where(t => t.Value == country).FirstOrDefault().Parent; 

      } 
     } 

XML File (metadata.xml)

<root version="mech5.2"> 
    <language>en-US</language> 
    <provider>Provider1</provider> 
    <data> 
    <title>Engine1</title> 
    <vendor_id>ABC</vendor_id> 
    <products> 
     <product> 
     <country>IN</country> 
     <times> 
      <time> 
      <start_date>2017-01-15</start_date> 
      <end_date>2017-09-15</end_date> 
      </time> 
     </times> 
     </product> 
    </products> 
    </data> 
</root> 

почему я получаю эту ошибку: «Символ ':' символ, шестнадцатеричное значение 0x3a, не могут быть включены в название «

+0

XML-вы вывесили хорошо. Откройте файл с помощью блокнота и убедитесь, что он совпадает с тем, который вы опубликовали. Я не вижу двоеточия в любом месте, которое даст ошибку, которую вы публикуете. – jdweng

+0

Я бы поменял ваш запрос на следующее: var curProduct = document.Descendants ("product"). Где (t => (строка) t.Element ("страна") == страна) .FirstOrDefault(); – jdweng

ответ

2

Вы можете использовать только XElement.Load() для создания и заполнения XElement из файла XML:

XElement document = XElement.Load(filePath); 
1

Проблема в том, что вы пытаетесь использовать неправильную форму конструктора. XElement пытается превратить вашу строку filepath в имя экземпляра, и это явно не работает. Попробуй это.

XElement x = new XElement(); 
x.Load(filePath); 

пс. дважды проверьте декларацию конструктора вы используете https://msdn.microsoft.com/en-us/library/bb292758(v=vs.110).aspx

+0

спасибо за повтор, это не XmlDocument. Я использую System.Xml.Linq.XElement. Не работает –

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