【发布时间】:2013-09-12 06:12:44
【问题描述】:
我不知道如何从这个特定的 XML 文档中提取值,并且正在寻求一些帮助,因为我对 xml 解析不是很有经验。
我必须使用XDocument.Load 来加载文件。
其实我在用
doc = XDocument.Load(uri);
challenge = GetValue(doc, "Challenge");
这没有任何问题,但是如何获得元素权利的内在价值? (多个“名称”) 在一天结束时,我需要现在
Phone = x
Dial = x
HomeAuto = x
BoxAdmin = x
也可能缺少某些条目(电话、拨号、HomeAuto、BoxAdmin)。这 是动态的。
这是我的 xml 文件:
<SessionInfo>
<SID>68eba0c8cef752a7</SID>
<Challenge>37a5fe9f</Challenge>
<BlockTime>0</BlockTime>
<Rights>
<Name>Phone</Name>
<Access>2</Access>
<Name>Dial</Name>
<Access>2</Access>
<Name>HomeAuto</Name>
<Access>2</Access>
<Name>BoxAdmin</Name>
<Access>2</Access>
</Rights>
</SessionInfo>
编辑:(添加 GetValue 方法)
public string GetValue(XDocument doc, string name)
{
XElement info = doc.FirstNode as XElement;
return info.Element(name).Value;
}
【问题讨论】:
-
嘿 @DanB - 对您的 XML 进行旁注 - 您最好将相关的名称和访问标签包装在父元素中,或者使用一个带有
Name和Access属性的Right元素.这清楚地表明两者之间存在关系,并且应该使事情更容易处理。对即将到来的实际问题的回答。 . . -
发布
GetValue的代码也会有所帮助。 -
@JohnLBevan - 你完全正确,不幸的是,这个 xml 来自第 3 方的网络设备,我无法更改布局。
-
@Tim Ups,我用 GetValue 方法更新问题
-
XPath 的典型工作。