2012-11-23 16 views
6

Używam LINQ do XML do pracy z plikiem PackageContents.xml, utworzonym przez firmę Autodesk. Firma zdefiniowała strukturę tego pliku XML here, ale bez schematu XSD.LINQ to XML: Ignorowanie przypadku atrybutów

Mam problem: ta firma łamie jego zasady ... Często przypadek elementów i atrybutów jest nieprawidłowy. Na przykład zamiast atrybutu "URL" można zdefiniować atrybut "Url" (inna obudowa).

Ale case is important for XML (lub in English):

Podobnie jak nazwy elementów, nazwy atrybutów są wrażliwe na wielkość liter i musi zacząć z litery lub podkreślenia.

"Adres URL" nie jest równy "Url" - taki atrybut nie zostanie znaleziony.

Czy mogę rozwiązać ten problem poprzez LINQ do XML (lub inny), czy nie mogę?

Odpowiedz

6

Chociaż to prawda, że ​​myXelement.Attribute("URL") wymaga prawidłowego sprawę, nie ma nic Cię powstrzymuje robi

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

Wrap to w odpowiedni przedłużacz lub statyczne metody pomocnika i kod spożywanie nie powinno być tak źle.

+0

Dziękujemy! Masz rację. –