将我添加到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");
}
但没有成功。
帮助表示赞赏。
由于
答案 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