XMLWriter:带有标记名称和字符串的WriteStartElement,用于指示标记名称

kin*_*jia 3 c# xmlwriter

我有相同的标签名称和不同的字符串与标签名称不同.

这是XML.

<order>
  <ID>1001</ID> 
  <config>
    <properties>
      <entry key="Total">10</entry> 
      <entry key="Name">name</entry> 
      <entry key="Config">COMMON</entry> 
      <entry key="Delivery">15-FEBRUARY-2013</entry> 
      <entry key="Setting">name</entry> 
    </properties>
    <id>19</id> 
  </config>
  <aID>58239346</aID> 
</order>
Run Code Online (Sandbox Code Playgroud)

这是我目前的代码:

public String cards(string id)
    {
        StringWriter str = new StringWriter();
        XmlTextWriter xmlWriter = new XmlTextWriter(str);
        xmlWriter.Formatting = Formatting.Indented;
        xmlWriter.WriteStartDocument();
        xmlWriter.WriteStartElement("order");
        xmlWriter.WriteElementString("ID", "1001");
        xmlWriter.WriteStartElement("config");
        xmlWriter.WriteStartElement("properties");
        /*
         * Create <entry key> at here 
         * 
         * 
         * 
         *
         */
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndElement();
        xmlWriter.WriteElementString("ClientID", id);
        xmlWriter.WriteEndElement();
        xmlWriter.WriteEndDocument();
        xmlWriter.Flush();
        xmlWriter.Close();
        return str.ToString();
    }
Run Code Online (Sandbox Code Playgroud)

如何为XMLWriter编写入口标记??? 我不知道怎么写它.

Mar*_*ell 6

问题似乎是关于<entry>标签; 这基本上是一系列5个类似于:

xw.WriteStartElement("entry");
xw.WriteAttributeString("key", "RecordTotal");
xw.WriteString("10");
xw.WriteEndElement();
Run Code Online (Sandbox Code Playgroud)

然而,你可能也想看看XmlSerializer-很可能会令这个很多更容易:

using System;
using System.Collections.Generic;
using System.Xml.Serialization;

static class Program {
    static void Main() {
        var order = new Order {
            ClientId = 1001,
            Id = 58239346,
            Config = new OrderConfig {
                Id = 19,
                Properties = {
                    new OrderProperty { Key = "RecordTotal", Value = "10"},
                    new OrderProperty { Key = "InputFileName", Value = "name"},
                    new OrderProperty { Key = "ConfigName", Value = "COMMON_"},
                    new OrderProperty { Key = "DeliveryDate", Value = "15-FEBRUARY-2013"},
                    new OrderProperty { Key = "Qualifier", Value = "name"}
                }
            }
        };
        var ser = new XmlSerializer(typeof(Order));
        ser.Serialize(Console.Out, order);
    }
}
[XmlRoot("order")]
public class Order {
    [XmlElement("clientID", Order = 0)]
    public int ClientId { get; set; }    
    [XmlElement("config", Order = 1)]
    public OrderConfig Config { get; set; }    
    [XmlElement("orderID", Order = 2)]
    public int Id { get; set; }
}

public class OrderConfig {
    [XmlElement("id", Order = 2)]
    public int Id { get; set; }    
    private readonly List<OrderProperty> properties = new List<OrderProperty>();
    [XmlArray("properties", Order = 1), XmlArrayItem("entry")]
    public List<OrderProperty> Properties { get { return properties; } }
}

public class OrderProperty {
    [XmlAttribute("key")]
    public string Key {get;set;}
    [XmlText]
    public string Value {get;set;}
}
Run Code Online (Sandbox Code Playgroud)