我正在连接使用Apache Axis和SOAP 1.2实现的外部Web服务。 Web服务返回一个锯齿状的对象数组,如下所示。看看XML,我有xsi:type =“soapenc:Array”
分别在C#2和C#3中解析这个数组的最干净/最好的方法是什么? (我对C#2特别感兴趣,所以C#3解决方案只是感兴趣。)
- obj object[] {object[][]} -[0] object {object[]} -[0] object {string} -[1] object {string} -[1] object {object[]} -[0] object {string} -[1] object {bool} -[2] object {object[]} -[0] object {string} -[1] object {object[]} -[0] object {object[][]} -[0] object[] -[0] object{string} -[1] object{string)
答案 0 :(得分:1)
不确定什么是最佳做法,但这是你可以做到的一种方式。只需要测试对象是否是数组,如果是,则使用其可枚举接口。递归检查每个数组项。
_array = new object[3];
_result = new StringBuilder();
//Populate array here
foreach (object item in _array)
{
ParseObject(item);
}
private void ParseObject(object value)
{
if (value.GetType().IsArray)
{
IEnumerable enumerable = value as IEnumerable;
foreach (object item in enumerable)
{
ParseObject(item);
}
}
else
{
_result.Append(value.ToString() + "\n");
}
}