相关疑难解决方法(0)

如何控制.NET DataContract序列化,以便它使用XML属性而不是元素?

如果我有一个标记为a的类DataContract和一些标记有DataMember属性的属性,我可以轻松地将其序列化为XML,但它会创建如下的输出:

<Person>
    <Name>John Smith</Name>
    <Email>john.smith@acme.com</Email>
    <Phone>123-123-1234</Phone>
</Person>
Run Code Online (Sandbox Code Playgroud)

我更喜欢的是属性,比如......

<Person Name="John Smith" Email="john.smith@acme.com" Phone="123-123-1234" />
Run Code Online (Sandbox Code Playgroud)

DataMember属性允许我控制名称和顺序,但不能控制它是否被序列化为元素或属性.我环顾四周找到了DataContractFormat,IXmlSerializable但我希望有更简单的解决方案.

最简单的方法是什么?

.net serialization xml-serialization datacontract

16
推荐指数
2
解决办法
3万
查看次数

修改序列化ASP.NET WebAPI对象中的xml数组元素名称

在WebAPI控制器中返回对象列表时,我一直在努力输出自定义的根xml元素.

我的控制器方法看起来像这样:

    public List<Product> Get()
    {
        return repository.GetProducts();
    }
Run Code Online (Sandbox Code Playgroud)

它呈现像这样的xml输出:

<ArrayOfProduct>
  <Product>
    <Name>Product1</Name>
  </Product>
  <Product>
    <Name>Product2</Name>
  </Product>
</ArrayOfProduct>
Run Code Online (Sandbox Code Playgroud)

我想改变<ArrayOfProduct>,<Products>但没有找到这样做的方法.

我尝试了不同的属性DataContractDataMember属性无济于事.

有没有人知道是否有办法做我想做的事情,没有把我的List<Product>对象包装在一个新的类中而是返回它?

c# asp.net xml-serialization netdatacontractserializer asp.net-web-api

14
推荐指数
1
解决办法
6712
查看次数

在序列化数组时去掉<ArrayOfClassname>根元素

这是一个代码示例:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...

static void Main() 
{
    Person[] persons = new Person[] 
    {
        new Person{ FirstName = "John", LastName = "Smith"},
        new Person{ FirstName = "Mark", LastName = "Jones"},
        new Person{ FirstName= "Alex", LastName="Hackman"}
    };

    XmlSerializer xs = new XmlSerializer(typeof(Person[]), "");

    using (FileStream stream = File.Create("persons-" + Guid.NewGuid().ToString().Substring(0, 4) + ".xml")) 
    {
        xs.Serialize(stream, persons);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

<?xml version="1.0"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> …
Run Code Online (Sandbox Code Playgroud)

.net c# xml serialization

3
推荐指数
1
解决办法
2256
查看次数