【发布时间】:2017-09-11 10:43:12
【问题描述】:
我正在与第三方合作,该第三方具有用于多个不同请求的 xml 结构。
每个请求都有一个共同的标头结构,然后是一些特定的页脚数据。
不幸的是,页眉和页脚部分没有包含在它们自己的元素标签中,这是我无法更改的。
一些人为的请求示例如下所示:
样品请求 1
<?xml version="1.0" encoding="UTF - 8" standalone="yes"?>
<Request>
<RequestType>1</RequestType>
<User>User01</User>
<id>1234</id>
<Name>John</Name>
<Age>20</Age>
</Request>
示例请求 2
<?xml version="1.0" encoding="UTF - 8" standalone="yes"?>
<Request>
<RequestType>2</RequestType>
<User>User02</User>
<id>1235</id>
<School>The School</School>
<Teacher>Mrs Smith</Teacher>
</Request>
样品请求 3
<?xml version="1.0" encoding="UTF - 8" standalone="yes"?>
<Request>
<RequestType>3</RequestType>
<User>User01</User>
<id>223</id>
<Work>The Office</Word>
<Boss>Mr White</Boss>
<Phone>1234567</Phone>
<Payday>Friday</Payday>
</Request>
可以看到每个请求都有一个RequestType、User和id。
我的问题与编写将封装此 Xml 以进行序列化的 C# 代码有关。
对我来说,让我的每个 C# 类都有重复的标头(RequestType、User 和 id)似乎错误 ) 数据。
我尝试过使用泛型(请参阅下面的示例代码),但这导致了我的问题。
问题:如何序列化我的通用对象Footer,使其不被包裹在“根”页脚元素中?
[System.Xml.Serialization.XmlRoot("Request")]
public class GenericRequest<typeT>
{
public GenericRequest()
{
}
public int RequestType { get; set; }
public string User { get; set; }
public int id { get; set; }
public typeT Footer { get; set; }
}
【问题讨论】:
-
这不是一个有效的 xml。如果您知道分隔符,则可以进行拆分并一一解析。
-
我已编辑问题以使示例更清晰 - 对造成的任何混淆表示歉意。
标签: c# xml serialization