我有一个我需要消费的网络服务,它返回以下内容:
<catalog modules="2" children="0">
<title>Test Catalog</title>
<link type="application/xml" rel="self" href="http://someurl"/>
<link type="text/html" rel="alternate" href="http://someurl"/>
<parent modules="0" children="3">
<title>Top</title>
<link type="application/xml" rel="self" href="http://someurl"/>
<link type="text/html" rel="alternate" href="http://someurl"/>
</parent>
<module>
<id>MODULEID123</id>
<title>Some module title</title>
<link type="application/xml" rel="self" href="http://someurl"/>
<link type="text/html" rel="alternate" href="http://someurl"/>
<type>type123</type>
<description>Some Description</description>
</module>
<module>
<id>MODULEID456</id>
<title>Some other module title</title>
<link type="application/xml" rel="self" href="http://someurl"/>
<link type="text/html" rel="alternate" href="http://someurl"/>
<type>type123</type>
<description/>
</module>
</catalog>
我正在使用RestSharp来使用服务,在正常情况下,我希望标签位于父节点或类似的东西之下,这样我就可以只使用一个List<Module> Modules
的响应类。自动拉入它们。但是,由于它们刚好等于<parent>
,<title>
和<link>
节点,它看起来几乎是畸形的(尽管如此,它已经很长时间了因为我已经深入了解XML *应该*的样子 - 谢谢你,JSON!
因此,鉴于这是返回的结果,我如何指示RestSharp解析它?如果RestSharp期望格式良好的XML,从而拒绝这一点,那么我应该用老式的方式使用XMLReader手动解析它吗?
答案 0 :(得分:0)
糟糕,在文档中找到了它。显然这是基于约定的,所以虽然这看起来有点不稳定,但如果我假设父母在那里正确构建我的响应类,那应该没问题。
来自文档...
处理两种不同类型的列表:无父(内联)和常规(嵌套)。例如,以下两种XML结构
<?xml version="1.0" encoding="utf-8" ?>
<InlineListSample>
<image src="1.gif">value1</image>
<image src="2.gif">value2</image>
<image src="3.gif">value3</image>
<image src="4.gif">value4</image>
</InlineListSample>
<?xml version="1.0" encoding="utf-8" ?>
<NestedListSample>
<images>
<image src="1.gif">value1</image>
<image src="2.gif">value2</image>
<image src="3.gif">value3</image>
<image src="4.gif">value4</image>
</images>
</NestedListSample>
将映射到以下C#架构:
public class ListSample
{
public List<Image> Images { get; set; }
}
public class Image
{
public string Src { get; set; }
public string Value { get; set; }
}
如果两个元素结构偶然存在于层次结构中相关点的同一文档中,则父级/嵌套/常规列表优先。