2012-11-23 34 views
6

Tôi sử dụng LINQ to XML để làm việc với tệp PackageContents.xml, được tạo bởi công ty Autodesk. Công ty đã xác định cấu trúc của tệp XML này here, nhưng không có lược đồ XSD.LINQ to XML: Bỏ qua trường hợp thuộc tính

Tôi gặp sự cố: Công ty này vi phạm quy tắc của anh ấy ... Thường thì trường hợp của các thành phần và thuộc tính không hợp lệ. Ví dụ: thay vì thuộc tính "URL", thuộc tính "Url" có thể được xác định (vỏ khác).

Nhưng case is important for XML (hoặc, in English):

Giống như tên phần tử, thuộc tính tên là trường hợp nhạy cảm và phải bắt đầu với một chữ cái hoặc gạch chân.

"URL" không bằng "Url" - thuộc tính đó sẽ không được tìm thấy.

Tôi có thể giải quyết vấn đề này thông qua LINQ to XML (hoặc khác) hay không?

Trả lời

6

Trong khi nó là đúng rằng myXelement.Attribute("URL") sẽ đòi hỏi các trường hợp đúng, không có gì ngăn cản bạn làm

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

Gói này lên trong một gia hạn phù hợp hoặc phương pháp helper tĩnh và mã tốn của bạn không nên quá xấu.

+0

Cảm ơn bạn! Bạn đúng rồi. –