Как прочитать XML-файл с помощью программы чтения XML? - PullRequest
1 голос
/ 29 апреля 2011

Вопрос 1: Предположим, что я читаю XmlNodeType.Text, и я хотел бы знать его имя узла тега.Как это сделать, не перемещая курсор вверх или вниз?Также Как я могу узнать родительский тег текущего тега узла?

Вопрос 2: Предположим, что я читаю xml-файл и хочу начать с определенного тега узла.Как это сделать?

Вопрос 3: если у вас есть файл xsd, есть ли простой способ загрузить файл XML?Я использую C # 3.5 .net и SQL Server 2008.

Это то, что я написал до сих пор:

XmlTextReader reader = new XmlTextReader("datafile.xml");
while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element)
    {
        Console.Write(reader.Name);
    }
    else if (reader.NodeType == XmlNodeType.Text)
    {
        Console.Write("/"+reader.Name+"/" + reader.Value+"/");
    }
    else
    {
        if (reader.NodeType == XmlNodeType.EndElement)
        {
            Console.WriteLine(reader.Name);
            Console.ReadLine();
        }
    }
}
reader.Close();

Пожалуйста, дайте мне знать, если вам нужно больше разъяснений

1 Ответ

2 голосов
/ 29 апреля 2011

XmlReader не имеет состояния и сохраняет только информацию о текущем узле, поэтому, если вы читаете содержимое элемента и хотите узнать имя элемента, вам необходимо убедиться, что при чтении начального элемента В узле вы как-то сохраняете имя элемента.

Опять же, если вы хотите узнать имя родительского элемента, вам нужно сохранить эту информацию / заявить о себе, когда вы читаете документ xml.

Если вы хотите начать чтение с определенного узла, вам нужно пройти и читать документ xml узел за узлом, пока вы не прочитаете узел, с которого хотите начать.

В конечном итоге чтение xml с помощью класса XmlReader сложнее, чем альтернативы, вообще говоря, вы бы использовали XmlReader, только если документ xml очень большой, в большинстве других случаев используется одна из альтернатив:

  • Linq to XML
  • XmlDocument класс
  • Использование XSD.exe для создания класса .Net из файла XSD, который можно использовать для сериализации и десериализации XML с помощью класса XmlSerializer .

Для получения дополнительной информации см. Сериализация XML в .NET Framework

Если вы действительно хотите использовать XmlReader, вам следует прочитать Использование класса XmlReader .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...