【发布时间】:2016-05-27 08:20:33
【问题描述】:
我正在使用这个 XML 结构
<root>
<StandardValues>
<ButtonYES>Ja</ButtonYES>
<ButtonNO>Nei</ButtonNO>
<tooltips>
<tooltipOK>OK</tooltipOK>
<tooltipCancel>Cancel</tooltipCancel>
</tooltips>
</StandardValues>
<Page1>
<Key_Head alias="custom value">2011 Applications</Key_Head>
<Key_Title alias="custom values scsc">Title from 2011</Key_Title>
<Key_Param1>Parameter value</Key_Param1>
</Page1>
<Page2>
<Page_Head>2011 Applications</Page_Head>
<page_Title>Title from 2011</page_Title>
<CustomParam1>Parameter value</CustomParam1>
</Page2>
</root>
如何将子节点值单独作为 List 查找。
例如,在此 XML Page1 中有 3 个子节点我只想要这 3 个名称及其值不需要在结果列表中包含“root”“StandardValues”“tooltips”“Page2”“Page1”等节点。我只想要非常基础级别的 XML 元素,只有一些值
我试过了,但没有成功
var elements_list = doc.Root
.Elements().Where(p=>p.HasElements==false)
.Select(d => new
{
NodeName = (string)d.Name.LocalName,
Value = d.Value, // equal to id you are searching for
AttributeValue = (d.Attribute("alias") != null) ?
d.Attribute("alias").Value : ""
}).ToList();
foreach (var s in elements_list)
{
string ss = string.Format("{0} - {1} && {2}", s.NodeName, s.Value, s.AttributeValue);
}
【问题讨论】:
-
顺便说一句,
(d.Attribute("alias") != null) ? d.Attribute("alias").Value : ""可以写成(string)d.Attribute("alias") ?? ""。 -
也想包含第 2 页的子节点 .. 只有每个节点的子节点
-
@CharlesMager 我将节点名称保留为属性值,如果它为 null 这就是为什么我保留这样的代码
-
@JibinMathew 我建议的代码返回的结果完全相同?
标签: c# .net xml linq-to-xml