我需要在检索元素的属性值和元素值的同时检索元素名称。我设法检索了元素的属性值和元素的值,但无法检索元素的名称。
这是xml:
<appearance>
<line-width type="stem">0.7487</line-width>
<line-width type="beam">5</line-width>
<line-width type="staff">0.7487</line-width>
<line-width type="light barline">0.7487</line-width>
<line-width type="heavy barline">5</line-width>
<line-width type="leger">0.7487</line-width>
<line-width type="ending">0.7487</line-width>
<line-width type="wedge">0.7487</line-width>
<line-width type="enclosure">0.7487</line-width>
<line-width type="tuplet bracket">0.7487</line-width>
<note-size type="grace">60</note-size>
<note-size type="cue">60</note-size>
<distance type="hyphen">120</distance>
<distance type="beam">8</distance>
</appearance>
这是我的linq查询
Dim categories = From category In ScoreXml.Descendants("appearance") _
let El = category.Elements _
from Att in El _
let myAtt = att.attribute("type").value _
let myEl = el.value _
Select myAtt, myEl
我将结果集添加到列表中,并且需要元素的名称来区分相同的属性值。即,beam是元素行宽和距离的属性值。我需要一个像&#34; line-width&#34; - &#34; beam&#34; - &#34; 5&#34;和&#34;距离&#34; - &#34; beam&#34; - &#34; 8&#34;。
我尝试了很多东西,甚至不记得我现在所做的事情。我开始绕圈子走了。我知道我已经在子查询中接近访问属性的父级然后访问元素名称,但我只是试图复制我为一个例子做的事情,但不记得我是怎么做的。无论如何,用子查询做这件事给我留下了笛卡尔积的结果,这显然是没用的。
我希望我的问题和需要一样清楚。如何访问/返回每个元素的名称?
答案 0 :(得分:2)
您只需使用XElement.Name
或XElement.Name.LocalName
来获取元素名称,例如:
Dim categories = From category In ScoreXml.Descendants("appearance") _
let El = category.Elements _
from Att in El _
let myAtt = att.attribute("type").value _
let myEl = el.value _
Select myAtt, myEl, Att.Name.LocalName