2015-07-30 1 views
1

Мне нужно получить имя элемента, подобное «* -Font», а затем получить значения атрибута.Оператор «Как» не определен для типов «System.Xml.Linq.XName» и «String»

Здесь используется ... 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> 

Этот запрос не с ... оператора 'Like' не определено для типы «System.Xml.Linq.XName» и «String».

Я сделал чистый поиск и ничего не нашел для Linq для xml и оператора Like.

Итак, как я могу получить все имена элементов Как «* -Font».

ответ

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 

EDIT

Как показано в this question, вы можете использовать XML-литералов для (я не мог это исправить изначально, потому что @font-family не работает):

Dim categories = 
    From e In xml.Elements() 
    Let Id = e.Name.LocalName 
    Where Id.EndsWith("-font") 
    Let FontFamily = [email protected]<font-family> 
    Let FontSize = [email protected]<font-size> 
    Select Id, FontFamily, FontSize 
Смежные вопросы