Как извлечь атрибуты элементов при парсинге (десериализации) Excel XML файла?

Как эффективно провести десериализацию XML файла из Excel с использованием модели данных для парсинга в C#? Я попробовал два подхода, включая использование XmlNamespaceManager. Вот мои попытки и код для десериализации. Есть ли другие способы, которые могли бы быть более эффективными или простыми?
  • 17 мая 2024 г. 3:40
Ответы на вопрос 2
Для извлечения атрибутов элементов при парсинге Excel XML файла в C# вы можете использовать библиотеку System.Xml.Linq. Ниже приведен пример кода, который демонстрирует как можно извлечь атрибуты элементов из XML файла Excel:

```c#
using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        XDocument doc = XDocument.Load("excel.xml");

        // Найти все элементы "row" и извлечь их атрибуты
        foreach (XElement row in doc.Descendants("row"))
        {
            foreach (XAttribute attribute in row.Attributes())
            {
                Console.WriteLine("Attribute Name: {0}, Attribute Value: {1}", attribute.Name, attribute.Value);
            }
        }
    }
}
```

Этот код загружает XML файл Excel, ищет все элементы "row" и выводит на консоль имена и значения всех их атрибутов.

Что касается эффективности и простоты десериализации XML файла Excel в C#, то использование модели данных для парсинга (например, LINQ to XML) обычно является хорошим подходом. Однако, если вам нужно обрабатывать большие файлы, то может быть полезно использовать SAX-подобный парсер, который позволит читать файл по частям и не загружать его целиком в память.

XmlNamespaceManager может быть использован для работы с пространствами имен в XML документах, но в случае XML файлов Excel, скорее всего, это не понадобится.

Если у вас есть конкретные проблемы или требования к парсингу XML файлов Excel, пожалуйста, уточните их, чтобы мы могли предложить более точное решение.
У Worksheet - нет неймспейса. В свойстве Namespace атрибута XmlRoot для соответствующего класса поставь пустую строку ( null не работает) 

[XmlRoot(ElementName = "Worksheet", Namespace = "")]
public class Worksheet
{
    [XmlAttribute(AttributeName = "Name", Namespace = "urn:schemas-microsoft-com:office:spreadsheet")]
    public string Name { get; set; }
}
Похожие вопросы