读取和导航 XML 数据集文件

发布于 2024-08-08 20:00:26 字数 910 浏览 2 评论 0原文

将 XML 数据集文件添加到 DataSet 后,它看起来如下所示:

<?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");
            }

但没有成功。

帮助表示赞赏。

谢谢

The XML dataset file after I add it to a DataSet looks like this:

<?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>

I am having issues accessing the Address1 field or the Name field. I can loop through the Addresses or Friends tables but that doesn't help me since the data I want is wrapped one more level down.

I tried this:

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

But no success.

Help appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

今天小雨转甜 2024-08-15 20:00:26

使用 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);
    }
}

using 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;
    }

this gets the data as a XDocument and this is how you deal with the data

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);
    }
}
千纸鹤带着心事 2024-08-15 20:00:26

我建议您在使用 XML 时使用对象包装器。这很容易做到,我建议你看看这个博客:
http://www.picnet.com.au/blogs/Guido/post/2009/09/10/XML-Settings-Files-No-more-webconfig.aspx

其目标是设置 XML 文件,但是它在这里仍然适用。

谢谢吉

多·塔皮亚

I suggest you use an object wrapper whenever working with XML. This is very eashy to do, I suggest you have a look at this blog:
http://www.picnet.com.au/blogs/Guido/post/2009/09/10/XML-Settings-Files-No-more-webconfig.aspx

Which is aimed at settings XML files however it still applies here.

Thanks

Guido Tapia

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文