我正在使用此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);
}
答案 0 :(得分:3)
Elements
方法仅返回元素的直接子元素而不返回子元素。
改为使用Descendants
:
doc.Root.Descendants().Where(p=>!p.HasElements).Select(....