我在REST Web服务中生成XML时遇到了问题。正在为数组类型的元素创建根元素。我想要一个Array元素的扁平结构,并且根节点不能进入输出。
需要创建XML
<RootOrderStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Envelope>
<FunctionalAcknowledgment i:nil="true" />
<Header>
<Currency>US</Currency>
<Language>En-U</Language>
<Vendor i:nil="true" />
</Header>
</Envelope>
<Envelope>
<FunctionalAcknowledgment i:nil="true" />
<Header>
<Currency>US</Currency>
<Language>En-U</Language>
<Vendor i:nil="true" />
</Header>
</Envelope>
生成的XML是
<RootOrderStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Envelope>
<RootOrderStatusEnvelope>
<FunctionalAcknowledgment i:nil="true" />
<Header>
<Currency>US</Currency>
<Language>En-U</Language>
<Vendor i:nil="true" />
</Header>
</RootOrderStatusEnvelope>
<RootOrderStatusEnvelope>
<FunctionalAcknowledgment i:nil="true" />
<Header>
<Currency>US</Currency>
<Language>En-U</Language>
<Vendor i:nil="true" />
</Header>
</RootOrderStatusEnvelope>
</Envelope>
类对象结构是
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class RootOrderStatus
{
private RootOrderStatusEnvelope[] envelopeField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("Envelope")]
public RootOrderStatusEnvelope[] Envelope
{
get
{
return this.envelopeField;
}
set
{
this.envelopeField = value;
}
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class RootOrderStatusEnvelope
{
private object functionalAcknowledgmentField;
private RootOrderStatusEnvelopeHeader headerField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
public object FunctionalAcknowledgment
{
get
{
return this.functionalAcknowledgmentField;
}
set
{
this.functionalAcknowledgmentField = value;
}
}
/// <remarks/>
public RootOrderStatusEnvelopeHeader Header
{
get
{
return this.headerField;
}
set
{
this.headerField = value;
}
}
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class RootOrderStatusEnvelopeHeader
{
private string currencyField;
private string languageField;
private object vendorField;
/// <remarks/>
public string Currency
{
get
{
return this.currencyField;
}
set
{
this.currencyField = value;
}
}
/// <remarks/>
public string Language
{
get
{
return this.languageField;
}
set
{
this.languageField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(IsNullable = true)]
public object Vendor
{
get
{
return this.vendorField;
}
set
{
this.vendorField = value;
}
}
}
使用PASTE XML作为Visual Studio的CLASS功能创建类对象结构。
答案 0 :(得分:0)
首先:您发布的XML在结尾处缺少结束标记</RootOrderStatus>
。添加该标记后,使用“粘贴为XML”功能可能会获得更好的结果。
其次,您可以尝试的另一个选项是使用此网站生成的C#代码:http://xmltocsharp.azurewebsites.net/