从for循环返回多个值

时间:2013-11-11 05:54:29

标签: c# arrays list for-loop return-value

我已经解析了xml文档,并使用for循环来循环获取字符串中的不同值,但是当我尝试返回值时,我只得到最后获得的值,我想返回所有单个值,以便我可以以任何文件格式存储该值, 以下是我的代码,

XmlDocument xmlDOC = new XmlDocument();
       xmlDOC.LoadXml(periodID_Value_Before_OffSet); // string storing my XML 
       var value = xmlDOC.GetElementsByTagName("value");
       var xmlActions = new string[value.Count];
       string values = "";
       string Period1 = "";
       string periodlevel_period1 = "";
       var listOfStrings = new List<string>();
       string modified_listofstrings = listOfStrings.ToString();
       string arrayOfStrings = ""; 
       for (int i = 0; i < value.Count; i++)
       {
           var xmlAttributeCollection = value[i].Attributes;
           if (xmlAttributeCollection != null)
           {
               var action = xmlAttributeCollection["periodid"];
               xmlActions[i] = action.Value;
               values += action.Value + ",";
               string vals = values.Split(',')[1];
               string counts = values;
               string[] periods = counts.Split(',');
               Period1 = periods[i];
               // periodlevel_period1 = Client.GetAttributeAsString(sessionId, Period1, "name", "");
                  modified_listofstrings = Client.GetAttributeAsString(sessionId, Period1, "name", "");
                  modified_listofstrings.ToArray().ToString();
                  //listOfStrings = periodlevel_period1;
               }
           }
    return modified_listofstrings;

这个modified_listofstrings字符串只返回最后一个值,我想返回循环时获得的所有值的数组。

----------更新的问题---------- 下面是我的Sample XMl

   <string xmlns="http://tempuri.org/">
   <ResultSetHierarchy totalResultsReturned="1" totalResults="1" firstIndex="0" maxCount="-1"> 
   <object id="SC.1938773693.238"> 
     <measure.values> 
       <series id="SC.1938773693.108280985"> 
       <value periodid="SC.1938773693.394400760" value="17" /> 
       <value periodid="SC.1938773693.1282504058" value="15" /> 
       <value periodid="SC.1938773693.1631528570" value="13" />
       </series>
       </object> 
   </ResultSetHierarchy>
 </string>

我希望输出为“SC.1938773693.394400760”:“17”等等所有句号

2 个答案:

答案 0 :(得分:2)

根据提供的信息,我更新了答案。

List<string> items = new List<string>();
XmlDocument xmlDOC = new XmlDocument();
xmlDOC.Load(@"E:\Delete Me\ConsoleApplication1\ConsoleApplication1\bin\Debug\List.xml");
var elements = xmlDOC.GetElementsByTagName("value");

foreach (var item in elements)
{
   XmlElement value = (XmlElement)item;
   items.Add(string.Format("{0}:{1}", value.GetAttribute("periodid"), value.GetAttribute("value")));
}

答案 1 :(得分:0)

看起来你正试图:

  1. 加载XmlDocument
  2. 获取名称'periodid'
  3. 的所有属性列表
  4. 使用网络服务电话查看每个时间段
  5. 返回查找结果列表
  6. 如果这是正确的,以下方法应该做你需要的:

        public List<string> GetListOfData()
        {
            XmlDocument xmlDOC = new XmlDocument();
    
            xmlDOC.LoadXml("<Html><value periodid='Yabba'>YabbaValue</value><value periodid='Dabba'>DabbaValue</value><value periodid='Doo'>DooValue</value></Html>"); // string storing my XML 
    
            var value = xmlDOC.GetElementsByTagName("value");
    
            var listOfStrings = new List<string>();
            for (int i = 0; i < value.Count; i++)
            {
                var xmlAttributeCollection = value[i].Attributes;
    
                if (xmlAttributeCollection != null)
                {
                    var action = xmlAttributeCollection["periodid"];
                    string Period1 = action.Value;
                    listOfStrings.Add(QPR_webService_Client.GetAttributeAsString(sessionId, Period1, "name", "") + ":" + value[i].InnerText);
                }
            }
            return listOfStrings;
        }
    
相关问题