0

次のxmlコードがあります:

<Start>
       <MetricValue>
                    <Name>Name1</Name>
                    <Value>1</Value>
       </MetricValue>
       <MetricValue>
                    <Name>Name1</Name>
                    <Value>1</Value>
       </MetricValue>
       <Test>
             <MetricValue>
                          <Name>Name1</Name>
                          <Value>1</Value>
             </MetricValue>
             <MetricValue>
                          <Name>Name1</Name>
                          <Value>1</Value>
             </MetricValue>
       </Test>
</Start>

「テスト」タグの間からではなく、最初の 2 つのメトリック値のみを解析しようとしています。

XmlNodeList nlMetricValues = xmlDoc.SelectNodes("//Start//MetricValue");
foreach (XmlNode nMetricValue in nlMetricValues)
{
        Console.WriteLine("\Name: " + nMetricValue.SelectSingleNode(".//Name").InnerText);
        Console.WriteLine("\tValue: " + nMetricValue.SelectSingleNode(".//Value")).InnerText);
}

しかし、この foreach はすべてのメトリック値を解析しています。この問題を解決するにはどうすればよいですか?

4

2 に答える 2

0

クラスのメソッドElements()を使用できます。elementの子である要素XElementのみをロードします。MetricValueStart

var xml = @"
<Start>
    <MetricValue>
        <Name>Name1</Name>
        <Value>1</Value>
    </MetricValue>
    <MetricValue>
        <Name>Name1</Name>
        <Value>1</Value>
    </MetricValue>
    <Test>
        <MetricValue>
            <Name>Name1</Name>
            <Value>1</Value>
        </MetricValue>
        <MetricValue>
            <Name>Name1</Name>
            <Value>1</Value>
        </MetricValue>
    </Test>
</Start>";

var metricValues = XElement.Parse(xml).Elements("MetricValue");
于 2014-09-04T07:58:21.347 に答える
0

ノードツリーを検索して、前のノードの下で一致するものを検索する必要XPathがあります。"./Start/MetricValue""//"

構文チートシートへのリンク: W3Schools - XPath Syntax

于 2014-09-04T07:54:32.227 に答える