Получить комментарий в файле XML от RapidXML

Я пытаюсь получить значение команды в XML-файле. Я нашел функцию type() на его руководство. Но он просто возвращает числовое значение о типе узла. Есть ли способы получить это?

Это мой фрагмент:

 xml_node<> *Node = Doc.first_node();
 xml_node<> *Sub = Node->first_node("Task");
std::cout << "Comment: " << Sub->type() << std::endl;

И возвращаемое значение: Комментарий: 1

Это содержимое файла:

<!-- \GoogleUpdateTaskMachineCore -->    ***<<== this is the value I wanna get.***
<?xml version="1.0" encoding="UTF-16"?>

<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">

  <RegistrationInfo>

    <Version>1.3.33.7</Version>

    <Description>Keeps your Google software up to date. If this task is disabled or stopped, your Google software will not be kept up to date, meaning security vulnerabilities that may arise cannot be fixed and features may not work. This task uninstalls itself when there is no Google software using it.</Description>

  </RegistrationInfo>

  <Triggers>

    <LogonTrigger>

      <Enabled>true</Enabled>

    </LogonTrigger>

    <CalendarTrigger>

      <StartBoundary>2017-11-14T12:07:01</StartBoundary>

      <ScheduleByDay>

        <DaysInterval>1</DaysInterval>

      </ScheduleByDay>

    </CalendarTrigger>

  </Triggers>

  <Principals>

    <Principal id="Author">

      <UserId>S-1-5-18</UserId>

      <RunLevel>HighestAvailable</RunLevel>

    </Principal>

  </Principals>

  <Settings>

    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>

    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>

    <StartWhenAvailable>true</StartWhenAvailable>

    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>

    <Enabled>true</Enabled>

    <RunOnlyIfIdle>false</RunOnlyIfIdle>

    <WakeToRun>false</WakeToRun>

    <ExecutionTimeLimit>PT72H</ExecutionTimeLimit>

  </Settings>

  <Actions Context="Author">

    <Exec>

      <Command>C:\Program Files (x86)\Google\Update\GoogleUpdate.exe</Command>

      <Arguments>/c</Arguments>

    </Exec>

  </Actions>

</Task>

1 ответ

Во-первых, вам нужно будет использовать parse_comment_nodes флаг, когда ты parse() документ.

Затем перебирайте узлы, пока не найдете узел с type() == node_comment, тогда получите value() этого узла.

Другие вопросы по тегам