2014-01-12 21 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"));