首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IXmlSerializable更改xml标记名

IXmlSerializable更改xml标记名
EN

Stack Overflow用户
提问于 2012-06-21 22:28:05
回答 2查看 587关注 0票数 1

我有如下集合的类

代码语言:javascript
复制
public class MyClass:IXmlSerializable
{
    int vesrion;
    private Collection<int> testcoll;
}

为了序列化它,我编写了WriteXML,如下所示

代码语言:javascript
复制
public void WriteXml(XmlWriter writer)
{

    writer.WriteAttributeString("Version", this.vesrion.ToString());    

    XmlSerializer serializer = new XmlSerializer(typeof(Collection<int>));
    serializer.Serialize(writer, Testcoll);
 }

现在输出的xml具有与Testcoll相同的标记"ArrayOfInt“。但是我想把这个名字改成不同的名字"MyCollection“。

请告诉我如何做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-21 22:33:08

在字段上使用属性,如下所示:

代码语言:javascript
复制
[XmlElement(ElementName = "MyCollection")]
private Collection<int> testcoll;

编辑:@comments,错过了这些细节,请参阅下面的有效答案(编译和测试)

代码语言:javascript
复制
XmlSerializer serializer = new XmlSerializer(typeof(Collection<int>), new XmlRootAttribute("MyCollection"));
serializer.Serialize(writer, Testcoll);
票数 1
EN

Stack Overflow用户

发布于 2014-04-14 22:15:39

另一种不创建新XmlSerializer的方法:

代码语言:javascript
复制
public void WriteXml(XmlWriter writer)
{
    writer.WriteAttributeString("Version", vesrion.ToString(CultureInfo.InvariantCulture));
    writer.WriteStartElement("MyCollection");
    foreach (int collint in Testcoll)
    {
        writer.WriteElementString("int", collint.ToString(CultureInfo.InvariantCulture));
    }
    writer.WriteEndElement();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11140404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档