0

下面是我的 XML 解析代码:

XmlDocument xmlDoc = new XmlDocument();
// string storing my XML  result from Web Service
xmlDoc.LoadXml(periodID_Value_Before_OffSet); 
string xpath = "//ResultSetHierarchy/object/measure.values/series";
var nodes = xmlDoc.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
    HttpContext.Current.Response.Write(childrenNode.SelectSingleNode
  ("//ResultSetHierarchy/object/measure.values/series/value").Value);
}

在这里,我解析了 XML 字符串,它是 Web 服务的输出。
以下是网络服务的结果

<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> 
  </measure.values>
 </object> 
</ResultSetHierarchy>
</string>

我想从解析字符串时使用的 ForEach 循环中获取不同变量中所有periodid的值,因为我想将此值存储在文件中,当我不使用 ForEach 循环时,我只能读取一个值,即17,我想要从 periodid 获取所有值,任何帮助将不胜感激。

4

2 回答 2

0

你有没有尝试过:

var vals = childrenNode.Element("series") 
           .Elements() 
           .Select(element => element.value);

我会尝试在 Visual Studio 上运行它,但这应该可以。


这应该满足您的要求:

foreach (XmlNode seriesNode in nodes)
{

    var valueNodes = seriesNode.ChildNodes;
    foreach (XmlNode valueAttribute in valueNodes)
    {
        var holdsYourValue = valueAttribute.Attributes["value"].Value;
        Console.Out.WriteLine("Value: " + holdsYourValue);
    }

    HttpContext.Current.Response.Write(childrenNode.SelectSingleNode
        ("//ResultSetHierarchy/object/measure.values/series/value").Value);    
}
于 2013-11-08T12:53:17.630 回答
0
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(periodID_Value_Before_OffSet); // string storing my XML 
var items = doc.GetElementsByTagName("value");
var xmlActions = new string[items.Count];
var xmlActionsone = new string[items.Count];
for (int i = 0; i < items.Count; i++)
{
    var xmlAttributeCollection = items[i].Attributes;
    if (xmlAttributeCollection != null)
    {
        var periodid= xmlAttributeCollection["periodid"];
        xmlActions[i] = periodis.Value;
        var value= xmlAttributeCollection["value"];
        xmlActionsone[i] = value.Value;
        string values = "";
        values += periodid.Value + "," + value.Value;
    }
}

此代码将读取期间 id 的计数。然后它将根据计数循环并获取值。然后它将使用它们之间的逗号附加到一个字符串中。最后,您只需拆分字符串并获取值。

拆分值..

string counts = values;
string[] periods= counts.Split(',');
string value1=periods[0];
string value1=periods[1];
string value1=periods[2];....

现在您在各个变量中都有所有值..

于 2013-11-08T13:05:38.743 回答