我正在为客户端开发一个项目,该项目涉及连接到API,并使用它返回的数据。由于许多现有系统依赖API,因此无法更改API。
这是问题所在。其中一个XML标签(类别)有几个子类别。但是指定类别的包装标签在每个级别都被命名为不同的东西。
这是一个例子。
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Response>
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
<SubCatLevel2> <!-- This is a category tag - notice how it is named differently. -->
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
<SubCatLevel3> <!-- This is a category tag - notice how it is named differently. -->
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
<SubCatLevel4> <!-- This is a category tag - notice how it is named differently. -->
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
</Category>
</SubCatLevel4>
</Category>
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
<SubCatLevel4> <!-- This is a category tag - notice how it is named differently. -->
<Category>
<ID>Some ID</ID>
<Name>Some name</Name>
</Category>
</SubCatLevel4>
</Category>
</SubCatLevel3>
</Category>
</SubCatLevel2>
</Category>
<Category>
<ID>3</ID>
<Name>Trailere</Name>
<ToolCount>1</ToolCount>
<SubCatLevel2/>
</Category>
</Response>
所以问题是 - 我如何(使用XmlSerializer
)通过使用属性来反序列化这个XML?我希望类别有一个子类别列表,知道类别树的最大深度是4,并且它的可能元素名称是“SubCatLevel1”,“SubCatLevel2”,“SubCatLevel3”和“SubCatLevel4”。
修改
我能以某种方式使用XmlAnyElementAttribute
吗?