这是我的xml文档。我需要获得一个小时要素的价值。
`<report>
<location city="">
<interesting>
<url description="прогноз">
</interesting>
<day value="20200430" name="четверг">
<symbol value="11" desc="Переменная облачность с грозовыми ливнями"
value2="11" desc2="Переменная облачность с грозовыми ливнями"/>
<tempmin value="11" unit="°C"/>
<tempmax value="22" unit="°C"/>
<wind value="19" unit="km/h" symbol="13" symbolB="45"/>
<wind-gusts value="38" unit="km/h"/>
<rain value="3" unit="mm"/>
<humidity value="69"/>
<pressure value="1006" unit="mb"/>
<snowline value="2500" unit="m"/>
<uv_index_max value="5"/>
<sun in="05:34" mid="12:54" out="20:15"/>
<moon in="10:52" out="02:29" lumi="44.82%" desc="Прибывающая, 44.82%
Освещенность" symbol="7"/>
<local_info local_time="10:11" offset="3"/>
<hour value="02:00">
<temp value="14" unit="°C"/>
<symbol value="2" desc="Переменная облачность" value2="2"
desc2="Переменная облачность"/>
<wind value="18" unit="km/h" dir="SW" symbol="14" symbolB="46"/>
<wind-gusts value="35" unit="km/h"/>
<rain value="0" unit="mm"/>
<humidity value="57"/>
<pressure value="1005" unit="mb"/>
<clouds value="41%"/>
<snowline value="2500" unit="m"/>
<windchill value="14" unit="°C"/>
<uv_index value="0"/>
</hour>
<hour value="05:00">
**<temp value="12"** unit="°C"/>
<symbol value="2" desc="Переменная облачность" value2="2"
desc2="Переменная облачность"/>
<wind value="15" unit="km/h" dir="SW" symbol="14" symbolB="46"/>
<wind-gusts value="32" unit="km/h"/>
<rain value="0" unit="mm"/>
<humidity value="69"/>
<pressure value="1006" unit="mb"/>
<clouds value="27%"/>
<snowline value="2600" unit="m"/>
<windchill value="12" unit="°C"/>
<uv_index value="0"/>
</hour>
<hour value="08:00">...</hour>
...
我写了这段代码。但是它不能正常工作。它无法获得指定的元素,而我得到了一个系统。一直 InvalidOperationException 。如果我想从任何小时元素中获取任何值,如何为下面的代码获取正确的路径?(例如,此“ temp value =“ 14”)抱歉英语。
var mycur = doc.Descendants("day").Where(x => x.Element("hour").Attribute("value").Value=="16:00").Elements("temp").First();
var cur = mycur.Element("temp").Attribute("value").Value;
答案 0 :(得分:1)
您应该考虑按顺序查询XML report =>location => day ==> hour
。试试看:
var mycur = doc.Descendants("report")
.Descendants("location")
.Descendants("day")
.Descendants("hour").FirstOrDefault(x => x.Attribute("value").Value == "05:00");
var cur = mycur.Element("temp").Attribute("value").Value;
在这种情况下,它将在14
小时内给出预期的结果:02:00