使用 asp.net c# 从 XML 读取具有相同名称的子节点
Reading child node from XML with same name using asp.net c#
考虑以下XML.I只想从特定父节点读取特定子节点值。
**<response>
<Statuses>
<Detail>
<number>123</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2000</date>
</FromDate>
</Statuses>
</response>**
我想从 "fromDate" 标签中读取日期值以及从详细信息标签中读取数字。
我试过了,
If(reader.name.Equals("Statuses"StringComparison.CurrentCultureIgnoreCase)
{
dateValue=reader.GetAttribute("/FromDate/Date");
}
这不起作用。请建议。
我同意 Jon Skeet 的观点,你真的应该使用 LINQ 来 XML 因为这些类型 tasks.It 会让你的生活更轻松:
同一个 XML 文件:
<response>
<Statuses>
<Detail>
<number>123</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2000</date>
</FromDate>
</Statuses>
<Statuses>
<Detail>
<number>1234</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2001</date>
</FromDate>
</Statuses>
</response>
代码:
using System;
using System.Linq;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//If the xml file is in the solution - set Build Action of the file to "Embedded Resource"
//and Copy to Output Directory to "Copy always"
var doc = XDocument.Load("input.xml");
doc.Element("response").Elements().ToList().ForEach(e =>
{
string number = e.Element("Detail").Element("number").Value;
string date = e.Element("FromDate").Element("date").Value;
Console.WriteLine("Number - {0}.Date - {1}\n", number, date);
});
Console.ReadKey();
}
}
}
输出:
考虑以下XML.I只想从特定父节点读取特定子节点值。
**<response>
<Statuses>
<Detail>
<number>123</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2000</date>
</FromDate>
</Statuses>
</response>**
我想从 "fromDate" 标签中读取日期值以及从详细信息标签中读取数字。
我试过了,
If(reader.name.Equals("Statuses"StringComparison.CurrentCultureIgnoreCase)
{
dateValue=reader.GetAttribute("/FromDate/Date");
}
这不起作用。请建议。
我同意 Jon Skeet 的观点,你真的应该使用 LINQ 来 XML 因为这些类型 tasks.It 会让你的生活更轻松:
同一个 XML 文件:
<response>
<Statuses>
<Detail>
<number>123</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2000</date>
</FromDate>
</Statuses>
<Statuses>
<Detail>
<number>1234</number>
</Detail>
<ToDate>
<date>1/1/2000</date>
</ToDate>
<FromDate>
<date>1/1/2001</date>
</FromDate>
</Statuses>
</response>
代码:
using System;
using System.Linq;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//If the xml file is in the solution - set Build Action of the file to "Embedded Resource"
//and Copy to Output Directory to "Copy always"
var doc = XDocument.Load("input.xml");
doc.Element("response").Elements().ToList().ForEach(e =>
{
string number = e.Element("Detail").Element("number").Value;
string date = e.Element("FromDate").Element("date").Value;
Console.WriteLine("Number - {0}.Date - {1}\n", number, date);
});
Console.ReadKey();
}
}
}
输出: