2 回答
TA贡献1796条经验 获得超4个赞
您可能需要检查代码,因为我只是拿了一些类似的东西并将其更改为查看您的文档层次结构。我也没有使用DataSet. 考虑以下代码:
var filePath = "<path to your file.xml>";
var xml = XDocument.Load(filePath);
var items = from item in xml.Descendants("Product").Elements()
select item.Value;
Array.ForEach(items.ToArray(), Console.WriteLine);
这应该会显示产品下每个元素的值。如果需要整个元素,请删除.ValueLINQ 查询的 select 子句中的 。
更新
我现在投射到匿名类型。您将为文件中的每个 Product 元素获得其中一个。
var items = from item in dataset.Descendants("Product")
select new
{
RefCode = item.Element("RefCode").Value,
Codes = string.Join(", ", item.Elements("SiteCode").Select(x => x.Value)),
Status = item.Element("Status").Value
};
Array.ForEach(items.ToArray(), Console.WriteLine);
我已将代码展平为逗号分隔的字符串,但您可以根据需要保留IEnumerable或ToList。
TA贡献1829条经验 获得超13个赞
使用 xml Linq :
使用系统;使用 System.Collections.Generic; 使用 System.Linq;使用 System.Text; 使用 System.Xml;使用 System.Xml.Linq;
命名空间 ConsoleApplication51 { 类程序 {
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XElement doc = XElement.Load(FILENAME);
List<Product> products = doc.Descendants("Product").Select(x => new Product()
{
refCode = (string)x.Element("RefCode"),
siteCode = x.Elements("SiteCode").Select(y => (int)y).ToArray(),
status = (string)x.Element("Status")
}).ToList();
}
}
public class Product
{
public string refCode { get; set; }
public int[] siteCode { get; set; }
public string status { get; set; }
}
}
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报