你将如何在c#中构建这个xml
我需要生成这个简单的XML,寻找一种生成它的简洁方法。
2343> 2333> USA 23434 32
自从采用XDocument
以来,这是一个XmlWriter
答案:
StringWriter sw = new StringWriter(); using (XmlWriter xw = XmlWriter.Create(sw)) { xw.WriteStartElement("order"); xw.WriteElementString("user", "2343"); xw.WriteElementString("creditcardtype", "2333"); xw.WriteElementString("country", "USA"); xw.WriteStartElement("orderDetails"); xw.WriteElementString("amount", "23434"); xw.WriteElementString("shipping", "32"); xw.WriteEndElement(); xw.WriteEndElement(); } string s = sw.ToString();
或者使用XmlSerializer
:
[XmlRoot("order")] public class Order { [XmlElement("user")] public int User { get; set; } [XmlElement("creditcardtype")] public int CreditCardType { get; set; } [XmlElement("country")] public string Country { get; set; } [XmlElement("orderDetails")] public OrderDetails Details { get; set; } } public class OrderDetails { [XmlElement("amount")] public int Amount { get; set; } [XmlElement("shipping")] public int Shipping { get; set; } } .... var order = new Order { User = 2343, CreditCardType = 2333, Country = "USA", Details = new OrderDetails { Amount = 23434, Shipping = 32 } }; XmlSerializer ser = new XmlSerializer(order.GetType()); StringWriter sw = new StringWriter(); ser.Serialize(sw, order); string s = sw.ToString();
使用XDocument类,所以代码就像
XDocument srcTree = new XDocument( new XElement("order", new XElement("user", "2343"), new XElement("creditcardtype", "2333"), new XElement("country", "USA"), new XElement("orderDetails", new XElement ("amount", "23434"), new XElement ("shipping", "32") ) ) );
请参阅LINQ to XMl方法来做到这一点,就像这样
XDocument doc = new XDocument(new XElement("order", new XElement("user", "2343"), new XElement("creditcardtype", "2333"), new XElement("country", "USA"), new XElement("orderDetails", new XElement("amount", "23434"), new XElement("shipping", "32")))); doc.Save("myxml.xml");
XmlDocument xml = new XmlDocument(); XmlElement order = xml.CreateElement("order"); xml.AppendChild(order); XmlElement user = xml.CreateElement("user"); user.InnerText = "2343"; order.AppendChild(user); XmlElement ccType = xml.CreateElement("creditcardtype"); ccType.InnerText = "2333"; order.AppendChild(ccType);
等等
- 编写描述结构的XML模式。 (您还可以使用
xsd.exe
根据给定的XML文件自动生成架构。) - 使用
xsd.exe /classes
根据XML模式生成C#类。 - 现在,您可以使用
XmlSerializer
类从/向C#对象结构序列化/反序列化XML。
还有一个代码项目描述了这种方法。
我将使用Linq to XML建议,但为了完整性,我只需添加以下内容:
var xe = XElement.Parse("2343 2333USA 23434 32 ");
🙂
- WebBrowser.DrawtoBitmap()一致地为少数站点生成空白图像
- asp.net:如何从下拉列表中删除项目?
- 使用ASP.Net MVC RouteConfig的AngularJS Ui-Router。 它是如何工作的?
- 使用会话变量与ASP.Net成员资格提供程序
- 将存储过程中的Select Query的结果返回到List
- 重定向到“谢谢”页面并立即提供下载文件的保存对话框
- 加密查询字符串,包括键
- 允许用户通过Response.WriteFile()从我的网站下载
- “无法将’System.Byte ‘类型的对象强制转换为’System.IConvertible’。”照片中的错误:为什么以及如何修复它?