2015-07-03 82 views
-1

我想用Xelement創建一個xml文檔。我有一個2個對象,數據和產品的列表。每個都有一個對象列表。 xml文檔需要設置這樣如何使用Xelement創建一個xml文檔

<Property> 
    <Points> 
    <Sqft>1432</Sqft> 
    <Price>45666</Price> 
    <Product>Product Name</Product> 
</Points> 
</Property> 

這裏是我使用的,當然這是行不通的代碼,但它是什麼,我會在理論上需要做的。

var xEleProperty = new XElement("Property", 
         from item in Property.Data && item1 in Property.Products 
         select new XElement("points", 
            new XElement("Sqft", item.sqft), 
            new XElement("Price", item.price), 
            new XElement("Product", item1.product) 
            )); 

回答

1

以下作品,則需要Id屬性才能加入這兩個集合,否則您將獲得重複記錄:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var data = new List<Data>(); 
     var products = new List<Product>(); 

     data.Add(new Data { ProductId = 1, Price = 321.0, Sqft = 789 }); 
     products.Add(new Product { Id = 1, Name = "SomeProduct 1" }); 

     data.Add(new Data { ProductId = 2, Price = 123.0, Sqft = 456 }); 
     products.Add(new Product { Id = 2, Name = "SomeProduct 2" }); 

     var xEleProperty = new XElement("Property", 
        from d in data 
        join product in products on d.ProductId equals product.Id 
        select new XElement("Points", 
            new XElement("Sqft", d.Sqft), 
            new XElement("Price", d.Price), 
            new XElement("Product", product.Name) 
           )); 
     Console.WriteLine(xEleProperty); 
     Console.ReadLine(); 
    } 
} 

public class Data 
{ 
    public int ProductId { get; set; } 
    public double Price { get; set; } 
    public int Sqft { get; set; } 
} 

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

輸出是:

<Property> 
    <Points> 
    <Sqft>789</Sqft> 
    <Price>321</Price> 
    <Product>SomeProduct 1</Product> 
    </Points> 
    <Points> 
    <Sqft>456</Sqft> 
    <Price>123</Price> 
    <Product>SomeProduct 2</Product> 
    </Points> 
</Property> 
+0

ha!有趣的我只看到了編輯。我的輸出中有重複項!謝謝!!!! – texas697

+0

太好了,很高興幫助 – BhavO

1

如果序列化是適用的,我會用這個(未經測試 - 對不起)

[XmlRoot("Property")]//you can change this if required 
public class Property 
{ 

    Public List<Point> points{get;set;}; 
} 

public class Point 
{ 
public double Sqft{get;set;} 
public double price{get;set;} 
public string Product{get;set;} 

} 

public static void Main(string[] args) 
{ 
    Property p = new Property(); 
    p.Sqft = 4; 
    p.Product= "Speaker"; 
    p.Price = 120; 
    Serialize(p); 
} 
static public void Serialize(Property p) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(p)); 
    using (TextWriter writer = new StreamWriter(@"C:\Xml.xml")) 
    { 
     serializer.Serialize(writer, p); 
    } 
} 
0

如果你的意思是不是正在創建你的文件,使用.Save方法的XElement