Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 格式化Web API结果_.net_Xml - Fatal编程技术网

.net 格式化Web API结果

.net 格式化Web API结果,.net,xml,.net,Xml,我在Web APi中收到一个XML结果,如下所示: <ArrayOfResult ....> <Result> <Id> <FirstName></FirstName> <LastName></LastName> <MiddleName></MiddleName> <Address1></Address1> <Address2></A

我在Web APi中收到一个XML结果,如下所示:

<ArrayOfResult ....> 
<Result>
 <Id>
 <FirstName></FirstName>
 <LastName></LastName>
 <MiddleName></MiddleName>
 <Address1></Address1>
 <Address2></Address2>
</Result>
</ArrayOfResult>

是否可以将其格式化为以下格式:

<Result>
 <WholeName>
       <LastName></LastName>
       <FirstName></FirstName>
       <MiddleName></MiddleName>
 </WholeName>
 <Addresses>
       <Address1></Address1>
       <Address2></Address2>
 </Address>
</Result>

您现在有了一个结果类:

public class Result
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
}
然后从API方法返回一个数组,使其按如下所示进行序列化:

var results = new Result[]
{
    new Result { Id = "123", ... },
};
现在您需要更改此响应的结构。为此,您需要定义一个新类型,以将数据准确地保存在所需的结构中:

public class Result
{
    public WholeName WholeName { get; set; }
    public List<Address> WholeName { get; set; }
}

public class WholeName
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string MiddleName { get; set; }
}

public class Address
{
    public string Address { get; set; }
}
公共类结果
{
公共WholeName WholeName{get;set;}
公共列表全名{get;set;}
}
公共类全名
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串MiddleName{get;set;}
}
公共课堂演讲
{
公共字符串地址{get;set;}
}
并将结果映射到该类型的实例:

var newResult = new Result
{
    WholeName = new WholeName
    {
        FirstName = oldResult.FirstName,
        ...
    },
    Addresses = new List<Address>
    {
        new Address
        {
            Address = oldResult.Address1,
            ...
        }
    }
}
var newResult=新结果
{
WholeName=新的WholeName
{
FirstName=oldResult.FirstName,
...
},
地址=新列表
{
新地址
{
地址=oldResult.Address1,
...
}
}
}

No,因为XML元素名称不能以数字开头。请阅读并详细说明你到底想做什么(你所说的“格式”到底是什么意思?)。不要关注数字,它只是一个样本。在WCF中,我返回了以下结果:使用XMLElement。。在WebAPI中手动映射它(设置元素和属性),是否也可以这样做?@stuartd您肯定是指“XSLT”?(别叫我雪莉)@Jeric那么你有一个XML输入,想要一个XML输出?或者您确实接收到一个对象作为输入,并且需要输出另一个对象,而XML是不必要的中间步骤?再次说明你到底想做什么,你做了什么。谢谢你纠正我。谢谢,也许就是这样。这就是我的想法。只是不知道我是否可以使用或忘记a/an注释来代替创建这些类。如果注释是一个错误的术语,请纠正我。您可以使用注释更改属性的序列化,但不能(非常简单地)在输出中引入全新的结构(例如所需的嵌套)。