我需要检索这样的元素名称" * - Font"然后检索属性值。
这是使用的linq ......
Dim categories = From dc as xelement In Xml.DescendantsAndSelf("defaults") _
let Id = lw.name _
Where Id = "*-Font" _
let FontFamily = lw.attribute("font-family").value _
let FontSize = lw.attribute("font-size").value _
Select Id, FontFamily, FontSize
这是xml示例......
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
此查询失败,显示... 运营商&喜欢&#39;未定义类型&System; .Xml.Linq.XName&#39;和&#39; String&#39;。
我已经进行了网络搜索,没有找到Linq to xml和Like运算符。
好的,那么如何检索所有元素名称,如&#34; * - 字体&#34;。
答案 0 :(得分:3)
看起来您想使用lw.Name.LocalName.EndsWith("-font")
,但您的LINQ查询有dc
和lw
...并且似乎无法编译。以下是我认为您正在寻找的完整示例:
Dim xml =
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.Attribute("font-family").Value
Let FontSize = e.Attribute("font-size").Value
Select Id, FontFamily, FontSize
这导致:
Id FontFamily FontSize -- ---------- -------- default-font Arial 20.4 word-font Times New Roman 10.2
修改强>
如this question所示,您可以将XML文字用于连字符属性(我最初无法解决这个问题,因为@font-family
不起作用):
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.@<font-family>
Let FontSize = e.@<font-size>
Select Id, FontFamily, FontSize