我在一个类中有产品要保存在XML文件中,产品分为几类,我想将我的产品保存在XML文件格式中,如下图所示。第1类产品在第1类下写,第2类产品在第2类下写。
我可以写一个方法吗? 提前谢谢。
<Categories>
<Category ID="1">
<CategoryName>Categoriname1</CategoryName>
<Description>drinks, coffees, beers, ales</Description>
<Products>
<Product>
<ProductName>Coffe</ProductName>
<QuantityPerUnit>15 boxes x 60 bags</QuantityPerUnit>
<UnitPrice>25</UnitPrice>
<UnitsInStock>3</UnitsInStock>
<UnitsOnOrder>0</UnitsOnOrder>
</Product>
<Product>
<ProductName>Chang</ProductName>
<QuantityPerUnit>24 - 12 oz bottles</QuantityPerUnit>
<UnitPrice>19</UnitPrice>
<UnitsInStock>17</UnitsInStock>
<UnitsOnOrder>40</UnitsOnOrder>
</Product>
</Products>
</Category>
<Category ID="2">
<CategoryName>Condiments</CategoryName>
<Description>spreads, and seasonings</Description>
<Products>
<Product>
<ProductName>Productname</ProductName>
答案 0 :(得分:2)
您可以使用 LINQ to XML :
答案 1 :(得分:2)
您可以使用LINQ to XML。
你的例子会像......一样开始。
var root = new XElement("Categories",
new XElement("Category",
new XAttribute("ID",1),
new XElement("CategoryName", "Categoriname1")
)
);
你的intellisense应该帮助你完成剩下的工作
答案 2 :(得分:1)
您需要序列化这些类。创建标有Serializable属性的类并使用XmlSerializer
示例:
答案 3 :(得分:1)
您可以使用XmlSerializer
班级或XmlDocument
班级或XDocument
班级,甚至是XmlTextWriter
班级。
答案 4 :(得分:1)
您可能还想简单地序列化您拥有的对象。你可以写一个像这样的方法:
public static bool WriteToXMLFile(string fullFileNameWithPath, Object obj, Type ObjectType)
{
TextWriter xr = null;
try
{
XmlSerializer ser = new XmlSerializer(ObjectType);
xr = new StreamWriter(fullFileNameWithPath);
ser.Serialize(xr, obj);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if(xr != null)
xr.Close();
}
return true;
}
答案 5 :(得分:1)
一种选择是使用LINQ to XML。假设您有这些类(我删除了一些属性以简化示例):
class Category {
public Int32 Id { get; set; }
public String Name { get; set; }
public IEnumerable<Product> Products { get; set; }
}
public class Product {
public String Name { get; set; }
}
您可以创建一些测试数据:
var categories = new[] {
new Category {
Id = 1,
Name = "Category 1",
Products = new[] {
new Product { Name = "Coffee" },
new Product { Name = "Chang" }
}
},
new Category {
Id = 2,
Name = "Condiments",
Products = new[] {
new Product { Name = "Product 1" }
}
}
};
然后,您可以从测试数据中创建XDocument
:
var xmlDocument = new XDocument(
new XElement(
"Categories",
categories.Select(
c => new XElement(
"Category",
new XAttribute("ID", c.Id),
new XElement("CategoryName", c.Name),
new XElement("Products",
c.Products.Select(
p => new XElement(
"Product",
new XElement("ProductName", p.Name)
)
)
)
)
)
)
);
要将其保存到文件,您可以使用Save
方法:
xmlDocument.Save("Categories.xml");