Amz*_*ath 0 .net c# xmlserializer
致力于XML序列化.序列化枚举类型时,要更改它的xml元素名称.任何帮助,将不胜感激.
我使用.Net xml序列化来序列化这个对象,并产生下面的xml输出
<MyEnums> <MyEnum>One</MyEnum> <MyEnum>Two</MyEnum> <MyEnum>Three</MyEnum></MyEnums>
Run Code Online (Sandbox Code Playgroud)
这是班级
public class Request
{
public List<MyEnum> MyEnums { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是我想要发出的XML
<MyEnums>
<ModifiedElementName>One</ModifiedElementName>
<ModifiedElementName>Two</ModifiedElementName>
<ModifiedElementName>Three</ModifiedElementName>
Run Code Online (Sandbox Code Playgroud)
这是Enum Type
enum MyEnum
{
One,
Two,
Three
}
Run Code Online (Sandbox Code Playgroud)
期望输出为xml
<ModifiedElementName>One</ModifiedElementName>
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以使用你的XmlType属性enum,如下所示:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace Scratch
{
[XmlType("ModifiedEnumName")]
public enum TestEnum
{
One,
Two,
Three,
}
public class TestClass
{
public TestClass()
{
MyEnums = new List<TestEnum>();
}
public List<TestEnum> MyEnums { get; set; }
}
static class Program
{
static void Main(string[] args)
{
using (var sw = new StringWriter())
{
new XmlSerializer(typeof(TestClass)).Serialize(sw, new TestClass { MyEnums = { TestEnum.Two } });
Console.WriteLine(sw.GetStringBuilder());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这输出
<?xml version="1.0" encoding="utf-16"?>
<TestClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyEnums>
<ModifiedEnumName>Two</ModifiedEnumName>
</MyEnums>
</TestClass>
Run Code Online (Sandbox Code Playgroud)
编辑:这假设所有TestEnum需要以相同的方式序列化.如果您希望能够为同一类型的不同属性指定不同的XML元素名称,请使用carlosfigueira的答案.
| 归档时间: |
|
| 查看次数: |
602 次 |
| 最近记录: |