读取和导航XML数据集文件

时间:2009-10-29 03:08:45

标签: c# ado.net dataset linq-to-xml

将我添加到DataSet后的XML数据集文件如下所示:

<?xml version="1.0" standalone="yes"?>
<root>
 <Email></Email>
 <FirstName></FirstName>
 <LastName></LastName>
 <Addresses>
   <item>
     <Address1></Address1>
   </item>
   <item>
     <Address1></Address1>
   </item>
 </Addresses>
 <Friends>
   <item>
     <Name></Name>
   </item>
   <item>
     <Name></Name>
   </item>
 </Friends>
</root>

我在访问Address1字段或Name字段时遇到问题。我可以循环遍历地址或朋友表,但这对我没有帮助,因为我想要的数据再被包裹一层。

我试过了:

            foreach (DataRow ar in ds.Tables["Addresses"].Rows)
            {
                DataRow[] orderDetails = ar.GetChildRows("item");
            }

但没有成功。

帮助表示赞赏。

由于

2 个答案:

答案 0 :(得分:1)

使用linq to XML

public static XDocument GetXDocument()
    {
        XDocument mydata = XDocument.Parse("<?xml version=\"1.0\" standalone=\"yes\"?><root><Email></Email><FirstName></FirstName><LastName></LastName><Addresses><item><Address1>TestData</Address1></item><item><Address1></Address1></item></Addresses>  <Friends>    <item>      <Name></Name>    </item><item><Name></Name></item></Friends></root>");
        return mydata;
    }

这将数据作为XDocument获取,这就是您处理数据的方式

public void OutputAddress()
{
   XDocument data = xmlData.GetXDocument();
   string Expected = "TestData";
   var result = from 
       addesses in data.Element("root").Elements("Addresses") 
   where 
       addesses.Element("item").Element("Address1").Value != string.Empty
   select addesses.Element("item").Element("Address1").Value;

   foreach (string address1 in result)
   {
       Console.Write(address1);
    }
}

答案 1 :(得分:0)

我建议您在使用XML时使用对象包装器。这是非常狡猾的,我建议你看一下这个博客: http://www.picnet.com.au/blogs/Guido/post/2009/09/10/XML-Settings-Files-No-more-webconfig.aspx

这是针对设置XML文件的,但它仍适用于此处。

由于

Guido Tapia