2015-02-23 10 views
0

У меня есть следующий XML:Get XElement по значению атрибута

<rootNode> 
    ... some stuff 
    <ReportCellRef> 
    <dang n="DVCompany" h="0" u="0" o="0" fmt="0"> 
     ... some stuff 
    </dang> 
    </ReportCellRef> 
</rootNode> 

И я хочу получить <dang ...> ... </dang> узел как XElement, так что я могу заменить его на другой узел, если у меня есть значение атрибут n.

У меня этот код:

Dim nameToSearch = importNode.Attribute("n").Value 
Dim replaceable = From dangToTake In xdoc.Elements("ReportCellRef") _ 
        Where CStr(dangToTake.Element("dang").Attribute("n")) = nameToSearch 
        Select dangToTake 

For Each nodeToReplace As XElement In replaceable 
    nodeToReplace.ReplaceWith(importNode) 
Next nodeToReplace 

Но запрос LINQ не дали никаких результатов ... Любые идеи?

ответ

0

Бросок "Потомки()" называют там:

dim xdoc as XDocument = XDocument.Parse("<rootNode><ReportCellRef><dang n=""DVCompany"" h=""0"" u=""0"" o=""0"" fmt=""0""></dang></ReportCellRef></rootNode>") 
Dim replaceable = From dangToTake In xdoc.Descendants().Elements("ReportCellRef") _ 
       Where dangToTake.Element("dang").Attribute("n").Value = "DVCompany" 
       Select dangToTake 
1

Вы сравниваете XAttribute с его значением. CStr(dangToTake.Element("dang").Attribute("n")) не дает вам значения атрибута. Вместо этого попробуйте dangToTake.Element("dang").Attribute("n").Value.

+0

Еще пустой результат запроса ... – Syspect

 Смежные вопросы

  • Нет связанных вопросов^_^