2012-11-23 6 views
6

Uso LINQ to XML per lavorare con il file PackageContents.xml, creato dalla società Autodesk. La società ha definito la struttura di questo file XML here, ma senza schema XSD.LINQ to XML: ignoranza del caso degli attributi

Ho un problema: questa azienda infrange le sue regole ... Spesso il caso di elementi e attributi non è valido. Ad esempio, invece dell'attributo "URL" è possibile definire l'attributo "Url" (involucro differente).

Ma case is important for XML (o, in English):

Come nomi di elemento, attributo nomi sono case-sensitive e devono iniziare con una lettera o di sottolineatura.

"URL" non è uguale a "Url" - tale attributo non verrà trovato.

Posso risolvere questo problema tramite LINQ in XML (o altro) oppure non riesco?

risposta

6

Mentre è corretto che myXelement.Attribute("URL") richiederebbe il caso corretto, non c'è nulla ti impedisce di fare

var attribute = x.Attributes() 
       .SingleOrDefault(xa => 
        string.Equals(xa.Name.LocalName, 
            "Url", 
            StringComparison.InvariantCultureIgnoreCase)); 

avvolgere questo in un interno adatto o metodo di supporto statico e il codice di consumare non dovrebbe essere troppo male.

+0

Grazie! Hai ragione. –