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);
}

ここでは、Web サービスからの出力である 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である 1 つの値のみを読み取ることができます。 periodid からすべての値を取得したい場合は、どんな助けでも大歓迎です。

4

2 に答える 2

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 に答える
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 に答える