我需要在检索元素的属性值和元素值的同时检索元素名称。我已经设法检索了元素的属性值和元素的值,但无法检索元素的名称。
这是 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
我正在将结果集添加到列表中,并且需要元素的名称来区分相同的属性值。 即,梁是元素线宽和距离的属性值。我需要像"线宽"-"梁"-"5"和"距离"-"梁"-"8"这样的结果。
我尝试了很多事情,甚至不记得我现在做了什么。我开始兜圈子了。我知道我已经接近在子查询中访问属性的父级然后访问元素名称,但我只是试图复制我所做的示例,但不记得我是如何做到的。无论如何,使用 sub 查询执行此操作给我留下了一个显然无用的笛卡尔乘积结果。
我希望我的问题和需求是清楚的。如何访问/返回每个元素的名称?
简单地使用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