2014-01-12 4 views
-2

Мне нужно разобрать XML-документ, но я не могу использовать XDocument. Не вдаваясь в технические подробности о том, почему я не могу его использовать, как я могу это сделать? Однако я могу использовать XmlDocument и другие методы.XML-массив без XDocument

var restaurants = from r in xdoc.Root.Elements("Restaurant") 
        select new { 
        Name = (string)r.Element("name"), 
        Location = (string)r.Element("location") 
       }; 
foreach(var restaurant in restaurants) 
{ 
    String name = restaurant.Name; 
    String location = restaurant.Location; 
} 
+0

Великий. Почему бы вам не показать документ, который вы пытаетесь разобрать? – MarcinJuraszek

+1

** Почему ** вы не можете использовать 'XDocument'? Это похоже на вопрос: «Как завинтить винт без отвертки?» – SLaks

ответ

4

Предполагая, что файл XML выглядит так, как вы описали в your previous question:

<Restaurants> 
    <Restaurant> 
     <name>test</name> 
     <location>test</location> 
    </Restaurant> 
    <Restaurant> 
     <name>test2</name> 
     <location>test2</location> 
    </Restaurant> 
</Restaurants> 

Да, я добавил корень Restaurants элемент, чтобы сделать это правильный файл XML.

Вы можете использовать XML десериализации, чтобы получить объекты из этого XML:

Классы

public class Restaurant 
{ 
    [XmlElement(ElementName = "name")] 
    public string Name { get; set; } 
    [XmlElement(ElementName = "location")] 
    public string Location { get; set; } 
} 

public class Restaurants 
{ 
    [XmlElement(ElementName="Restaurant")] 
    public List<Restaurant> Items { get; set; } 
} 

Десериализация

var serializer = new XmlSerializer(typeof(Restaurants)); 
var restaurants = serializer.Deserialize(File.OpenRead("Input.txt")); 
Смежные вопросы