2011-10-11 15 views
8

के साथ "गहरी" एक्सएमएल का उपयोग कैसे करें मुझे एक्सएमएल डेटासोर्स का उपयोग कर एमएसटीएस्ट के साथ कुछ समस्याएं आ रही हैं। मान लें मैं एक XML फ़ाइल है कि इस तरह दिखता है मिल गया है कि: मैं इस हो सकता है लगता हैएमएसटीएस्ट एक्सएमएल डेटासोर्स

var name = row["Name"]; 
System.ArgumentException: Column 'Name' does not belong to table User. 

:

<Users> 
    <User> 
     <Id>1</Id> 
     <Name> 
      <First>Mike</First> 
      <Last>Paterson</Last> 
     </Name> 
    </User> 
    <User> 
     <Id>2</Id> 
     <Name> 
      <First>John</First> 
      <Last>Doe</Last> 
     </Name> 
    </User> 
</Users> 

मेरे समस्या है, तथापि, मैं नाम तत्व के ahold नहीं मिल सकता है डेटारो प्रश्न के अधिक से अधिक लेकिन किसी भी मदद की सराहना की जाएगी।

संपादित करें:

[DeploymentItem("XmlDatasourceTest\\Users.xml"), DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\Users.xml", "User", DataAccessMethod.Sequential), TestMethod] 
public void TestMethod1() 
{ 
    var row = TestContext.DataRow; 

    DataTable table = row.Table.Copy(); 

    foreach (DataRow r in table.AsEnumerable().ToArray()) 
    { 
     r.Delete(); 
    } 

    table.ImportRow(row); 

    table.WriteXml(@"C:\test.xml"); 
} 

पहली पंक्ति, इस पैदावार के लिए::

<?xml version="1.0" standalone="yes"?> 
<DocumentElement> 
    <User> 
    <Id>1</Id> 
    </User> 
</DocumentElement> 

यहां तक ​​कि अगर मैं एक नए DataTable को DataRow कॉपी और एक्सएमएल नाम तत्व बारे में मौजूद नहीं है

उत्तर

1

मुझे भी ऐसी समस्या का सामना करना पड़ा है और इस तरह मैं इसे हल करने में सक्षम था:

DataRow dataRow = TestContext.DataRow.GetChildRows("User_Name").First(); 
string s = (string)dataRow["First"]; // s = "Mike" 

"उपयोगकर्ता_नाम" - बाल संबंध का नाम है जो उपयोगकर्ता तालिका और नाम तालिका को बांधता है।

संबंधित मुद्दे