【问题标题】:Parse jagged array in C#在 C# 中解析锯齿状数组
【发布时间】:2010-01-25 16:07:38
【问题描述】:

我正在连接到使用 Apache Axis 和 SOAP 1.2 实现的外部 Web 服务。 Web 服务返回一个锯齿状的对象数组,如下所示。查看 XML 我有 xsi:type="soapenc:Array"

分别在 C#2 和 C#3 中解析这个数组的最干净/最好的方法是什么? (我对 C#2 特别感兴趣,因此 C#3 解决方案仅供参考。)

- 对象对象[] {对象[][]} -[0] 对象 {object[]} -[0] 对象 {字符串} -[1] 对象 {字符串} -[1] 对象 {object[]} -[0] 对象 {字符串} -[1] 对象 {bool} -[2] 对象 {object[]} -[0] 对象 {字符串} -[1] 对象 {object[]} -[0] 对象 {object[][]} -[0] 对象[] -[0] 对象{字符串} -[1] 对象{字符串)

【问题讨论】:

  • 到目前为止你有什么(代码)?
  • 你想把它解析成什么?您提到了 xml - 您是否有一些带有所需输出的示例数据?

标签: c# jagged-arrays


【解决方案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");
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 2011-06-10
    • 1970-01-01
    • 2015-10-18
    • 2013-07-01
    • 2010-11-08
    • 1970-01-01
    • 2013-12-27
    相关资源
    最近更新 更多