2017-04-04 4 views
0

だから、ここに問題があります。 今はそうのようなデータソースとして直接XMLを使って実験している:MsTest - XMLデータソース:XML全体をXElementとして取得できますか?

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", 
    @"Datasets\test01.xml", "test", DataAccessMethod.Sequential)] 

私の(既存の)テスト自動化フレームワークを完全に解析し、XElementパラメータとして渡されたテストデータで動作するように作られています。

しかし、上記のコードを使用するとDataTableを含むDataRowが生成され、XML構造が個々のサブノードに分割されるようです。また、this discussionによれば、XMLには(最大で2レベルの)テーブルが含まれている必要がありますか?

達成したいのは、このようなものですが、DataRowオブジェクトとXElementオブジェクトの間のリンクがありません

XElement xmlData = testContext.DataRow["login"]; 

このXMLから、login要素が返されます。編集:この要素自体にいくつかの子ノードが含まれます(深さは複数のレベルになります)。

<test> 
     <login>...</login> 
     <actions>...</actions> 
    </test> 

答えて

0

このように動作します。しかし、問題は、DataRow.Tableが現在想定されている現在のデータローだけでなくXML全体を返すということです。

 using (var ms = new MemoryStream()) 
     { 
      testContext.DataRow.Table.WriteXml(ms); 
      var xmlData = XElement.Parse(Encoding.UTF8.GetString(ms.ToArray())); 
      Console.Write(xmlData.ToString()); 
      return xmlData.Element(rowName).Element(tag); 
     } 
関連する問題