2

サービスから受け取るデータ セットがあります。データは XML 形式で提供されます。すべてのデータを含む XElement オブジェクトが与えられます。XML ドキュメントの構造は非常に単純です。次のようになります。

<root> 
 <dataPoint>
   <id>1</id>
   <param1>somedata</param1>
   <param2>somedata</param2>
 </dataPoint>
 <dataPoint>
   <id>2</id>
   <param1>somedata</param1>
   <param2>somedata</param2>
 </dataPoint>
</root>

もちろん、多数のデータポイントがあります。また、GUI に表示される dataPoints の ID を含むリスト (List) もあります。私が欲しいのは、GUI に表示されない dataPoints であるため、データセット全体ではなく、それらのみを操作できます。ありがとう

4

2 に答える 2

2
var toDisplay = new List<string>() { "2" };

var xDoc = XElement.Load(.....);
var dPoints = xDoc.Descendants("dataPoint")
                    .Where(d => !toDisplay.Contains(d.Element("id").Value));
var newXml = new XElement("root",dPoints).ToString();
于 2012-05-07T21:59:40.627 に答える
0

変更可能なディクショナリを使用して、ポイントと対応するノードのディクショナリを提供する 1 つの方法を次に示します。

var xml = "<root> \r\n <dataPoint>\r\n   <id>1</id>\r\n   <param1>somedata</param1>\r\n   <param2>so" +
"medata</param2>\r\n </dataPoint>\r\n <dataPoint>\r\n   <id>2</id>\r\n   <param1>somedata" +
"</param1>\r\n   <param2>somedata</param2>\r\n </dataPoint>\r\n</root>";    

var doc = XElement.Parse(xml);  

var pointsInGui = new List<int> {1, 3, 5};  

var dict = doc.Descendants("dataPoint").ToDictionary(e => Convert.ToInt32(e.Element("id").Value));      
foreach (var point in pointsInGui) dict.Remove(point);

この時点でdict含まれています2 => <relevant element>

于 2012-05-07T21:47:38.677 に答える