将 linq 中的元素名称返回到 xml 结果



我需要在检索元素的属性值和元素值的同时检索元素名称。我已经设法检索了元素的属性值和元素的值,但无法检索元素的名称。

这是 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.NameXElement.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

相关内容

  • 没有找到相关文章

最新更新