Получить номер строки из XML-файла
Я пишу код на C++ в Visual Studio 2015 и использую стандартные XML-библиотеки, поставляемые с API Windows.
Ниже приведен пример XML-файла, который у меня есть.
<document> <schemaVersion>1.0.1</schemaVersion> <ID-1> <name>Sample XXX</name> </ID-1> <ID-2> <date>2009-03-17</date> <ID-2-1> <mediaType>myCable</mediaType> </ID-2-1> <documentType>myOrder</documentType> </ID-2> <ID-3> <documentCode>1</documentCode> <ID-3-1> <name>kool</name> <ID-3-2> <id>555</id> </ID-3-2> </ID-3-1> <ID-3> </document>
Моя задача-найти номер строки для конкретного тега. Я провел некоторое исследование в интернете и не смог найти способ получить номера линий.
Например, я хочу получить номер строки для тега узел documenttype
Мне не очень повезло сделать это в C++, то есть я не мог найти библиотеку, которая даст мне номера строк. В настоящее время я использую MSXML lib.
Может ли кто-нибудь подсказать мне, можно ли это сделать в C++? Любой пример кода будет очень полезен.
Что я уже пробовал:
В настоящее время я увеличиваю целое число в цикле, где оно проходит через узлы XML. И это целое число будет содержать номер строки для конкретного тега. Это не является правильной логикой и не сработает, если в XML-файле есть разрывы строк.
[no name]
Здесь нет никакой магии.
nv3
Мое лучшее предположение заключается в том, что MSXML не позволит вам найти номер строки тега. Вероятно, вам нужно будет найти другую библиотеку XML или реализовать свой собственный парсер, который отслеживает номера строк.
11917640 Member
Вы можете использовать Microsoft XmlLite SDK: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms752861(v=vs. 85) IXMlReader::GetLineNumber-это функция, которая вам нужна: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms752834%28v%3dvs.85%29 однако XmlLite-это относительно низкоуровневый SDK, и разбор XML-документа не так прост. Вы не можете загрузить весь документ сразу, и вам нужно построить логику синтаксического анализа в программе.