0

我已经解析了 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 字符串只返回最后一个值,我想返回所有在循环时获得的值的数组。

----------更新的问题--------- 下面是我的示例 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>

我希望所有 periodid 的输出为"SC.1938773693.394400760":"17"等等

4

2 回答 2

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")));
}
于 2013-11-11T06:04:43.710 回答
0

看起来您正在尝试:

  1. 加载 XmlDocument
  2. 获取名称“periodid”的所有属性的列表
  3. 使用 web 服务调用查找每个 periodid
  4. 返回查找结果列表

如果这是正确的,那么以下方法应该可以满足您的需要:

    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;
    }
于 2013-11-11T06:14:19.970 回答