@@ -470,33 +470,33 @@ protected virtual XElement GetElementByName(XElement root, XName name)
470
470
471
471
protected virtual XAttribute GetAttributeByName ( XElement root , XName name )
472
472
{
473
- var lowerName = name . LocalName . ToLower ( ) . AsNamespaced ( name . NamespaceName ) ;
474
- var camelName = name . LocalName . ToCamelCase ( Culture ) . AsNamespaced ( name . NamespaceName ) ;
473
+ var lower_name = name . LocalName . ToLower ( ) . AsNamespaced ( name . NamespaceName ) ;
474
+ var camel_name = name . LocalName . ToCamelCase ( Culture ) . AsNamespaced ( name . NamespaceName ) ;
475
475
476
476
if ( root . Attribute ( name ) != null )
477
477
{
478
478
return root . Attribute ( name ) ;
479
479
}
480
480
481
- if ( root . Attribute ( lowerName ) != null )
481
+ if ( root . Attribute ( lower_name ) != null )
482
482
{
483
- return root . Attribute ( lowerName ) ;
483
+ return root . Attribute ( lower_name ) ;
484
484
}
485
485
486
- if ( root . Attribute ( camelName ) != null )
486
+ if ( root . Attribute ( camel_name ) != null )
487
487
{
488
- return root . Attribute ( camelName ) ;
488
+ return root . Attribute ( camel_name ) ;
489
489
}
490
490
491
491
// try looking for element that matches sanitized property name
492
- var element = root . Attributes ( ) . FirstOrDefault ( d => d . Name . LocalName . RemoveUnderscoresAndDashes ( ) == name . LocalName ) ;
493
-
494
- if ( element != null )
495
- {
496
- return element ;
497
- }
498
-
499
- return null ;
492
+ return root . Descendants ( )
493
+ . OrderBy ( d => d . Ancestors ( ) . Count ( ) )
494
+ . Attributes ( )
495
+ . FirstOrDefault ( d => d . Name . LocalName . RemoveUnderscoresAndDashes ( ) == name . LocalName ) ??
496
+ root . Descendants ( )
497
+ . OrderBy ( d => d . Ancestors ( ) . Count ( ) )
498
+ . Attributes ( )
499
+ . FirstOrDefault ( d => d . Name . LocalName . RemoveUnderscoresAndDashes ( ) == name . LocalName . ToLower ( ) ) ;
500
500
}
501
501
}
502
502
}
0 commit comments