xml xdocument,读取属性
xml xdocument, read attribute
我想借助 XDocument 阅读 XML 文档。我已经在互联网上搜索正确的解决方案。我找到了这个 example,但没有正常工作。
我的XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<blabla>
<Infos>
<ConfigurationName>XXConfigurationName</ConfigurationName>
<DateSaved>14.10.2015 10:41:54</DateSaved>
</Infos>
<Configuration>
<DayRoutine>
<DayRoutine ID="4">
<Button>1</Button>
<DayRoutinePoints>
<Point0>00:00:00, 243</Point0>
<Point1>00:00:00, 243</Point1>
<Point2>00:00:00, 243</Point2>
<Point3>00:00:00, 243</Point3>
</DayRoutinePoints>
</DayRoutine>
<DayRoutine ID="3">
<Button>5</Button>
<DayRoutinePoints>
<Point0>00:00:00, 243</Point0>
<Point1>00:00:00, 243</Point1>
<Point2>00:00:00, 243</Point2>
<Point3>00:00:00, 243</Point3>
</DayRoutinePoints>
</DayRoutine>
</DayRoutine>
</Configuration>
</blabla>
我的 C# 代码 - 已更新:
XDocument doci = XDocument.Load(path);
var mijav = from r in doci.Descendants("Configuration").Descendants("DayRoutine").Descendants("DayRoutine").Where(r => (int)r.Attribute("ID") == 4)
select new
{
Button = r.Element("Button").Value,
DataPoints = r.Elements("DayRoutinePoints").Select(c => (string)c.Value).ToList(),
};
我当前的 C# 代码没有给我任何东西。我喜欢从 DayRoutine ID="3" 读取数据。怎么做?因为我试图擦除 "Where(r => (int)r.Attribute("ID")==3)" 并且我从第一个 "DayRoutine" 得到结果。但我喜欢从 "second" DayRoutine.
获取数据
后来我喜欢看积分。但是因为不是每次都是相同的点数,怎么循环读取这个点数呢?
感谢您的帮助,如有问题请追问
How I can read points now? It can be points from 0 to 60.
这种基本方法为您提供 XElement
分。
...
new
{
...
//DataPoints = r.Descendants("DayRoutinePoints").Descendants("Point1"),
DataPoints = r.Elements("DayRoutinePoints").ToList(),
}
在 ToList 前添加一个 .Select(xe => ...)
以转换为您自己的 class。
我想借助 XDocument 阅读 XML 文档。我已经在互联网上搜索正确的解决方案。我找到了这个 example,但没有正常工作。
我的XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<blabla>
<Infos>
<ConfigurationName>XXConfigurationName</ConfigurationName>
<DateSaved>14.10.2015 10:41:54</DateSaved>
</Infos>
<Configuration>
<DayRoutine>
<DayRoutine ID="4">
<Button>1</Button>
<DayRoutinePoints>
<Point0>00:00:00, 243</Point0>
<Point1>00:00:00, 243</Point1>
<Point2>00:00:00, 243</Point2>
<Point3>00:00:00, 243</Point3>
</DayRoutinePoints>
</DayRoutine>
<DayRoutine ID="3">
<Button>5</Button>
<DayRoutinePoints>
<Point0>00:00:00, 243</Point0>
<Point1>00:00:00, 243</Point1>
<Point2>00:00:00, 243</Point2>
<Point3>00:00:00, 243</Point3>
</DayRoutinePoints>
</DayRoutine>
</DayRoutine>
</Configuration>
</blabla>
我的 C# 代码 - 已更新:
XDocument doci = XDocument.Load(path);
var mijav = from r in doci.Descendants("Configuration").Descendants("DayRoutine").Descendants("DayRoutine").Where(r => (int)r.Attribute("ID") == 4)
select new
{
Button = r.Element("Button").Value,
DataPoints = r.Elements("DayRoutinePoints").Select(c => (string)c.Value).ToList(),
};
我当前的 C# 代码没有给我任何东西。我喜欢从 DayRoutine ID="3" 读取数据。怎么做?因为我试图擦除 "Where(r => (int)r.Attribute("ID")==3)" 并且我从第一个 "DayRoutine" 得到结果。但我喜欢从 "second" DayRoutine.
获取数据后来我喜欢看积分。但是因为不是每次都是相同的点数,怎么循环读取这个点数呢?
感谢您的帮助,如有问题请追问
How I can read points now? It can be points from 0 to 60.
这种基本方法为您提供 XElement
分。
...
new
{
...
//DataPoints = r.Descendants("DayRoutinePoints").Descendants("Point1"),
DataPoints = r.Elements("DayRoutinePoints").ToList(),
}
在 ToList 前添加一个 .Select(xe => ...)
以转换为您自己的 class。