0

我想将元组列表序列化为 XML 属性。例如:

List<Tuple<String, String>> attributes = new List<Tuple<String, String>>();
attributes.Add(New Tuple("att1", value1"));
attributes.Add(New Tuple("att2", value2"));

它应该显示为:

<Root att1="value1" att2="value2">
</Root>

编辑:我有一个这样的类,我正在使用 XmlSerializer 进行序列化:

public class Root
{
     List<Tuple<String, String>> attributes = new List<Tuple<String, String>>();

     //other attributes and elements exist in this class
}

有简单的方法吗?

谢谢

4

1 回答 1

1

您的语法不正确,因为New在 VB 而不是 C# 中大写。

请阅读文档XDocument并尝试完成示例。

这是一个例子:

var attributes = new List<Tuple<string, string>>();
attributes.Add(Tuple.Create("att1", "value1"));
attributes.Add(Tuple.Create("att2", "value2"));

var document = new XDocument();
var root = new XElement("Root");
document.Add(root);

foreach(var node in attributes.Select(x => new XAttribute(x.Item1, x.Item2)))
{
    root.Add(node);
}

Console.WriteLine(document); // <Root att1="value1" att2="value2" />

编辑:

要使用XmlSerializer使用属性:

[XmlType("Root")]
public class Root
{
    [XmlAttribute("attr1")]
    public string Attribute1 { get; set; }
    [XmlAttribute("attr2")]
    public string Attribute2 { get; set; }
}

或者您需要实现IXmlSerializable动态属性。

于 2013-07-05T13:47:26.977 回答