如何使用TinyXml解析特定元素

2024-01-16

我想解析一组元素TinyXml输出。本质上,我需要挑选出任何端口元素"portid"端口属性的状态为"open"(如下所示为端口 23)。

最好的方法是什么?以下是 TinyXml 输出的(简化)列表:

<?xml version="1.0" ?>
<nmaprun>
    <host>
        <ports>
            <port protocol="tcp" portid="22">
                <state state="filtered"/>
            </port>
            <port protocol="tcp" portid="23">
                <state state="open "/>
            </port>
            <port protocol="tcp" portid="24">
                <state state="filtered" />
            </port>
            <port protocol="tcp" portid="25">
                <state state="filtered" />
            </port>
            <port protocol="tcp" portid="80">
                <state state="filtered" />
            </port>
        </ports>
    </host>
</nmaprun>

这将大致做到这一点:

    TiXmlHandle docHandle( &doc );

    TiXmlElement* child = docHandle.FirstChild( "nmaprun" ).FirstChild( "host" ).FirstChild( "ports" ).FirstChild( "port" ).ToElement();

    int port;
    string state;
    for( child; child; child=child->NextSiblingElement() )
    {

        port = atoi(child->Attribute( "portid"));

        TiXmlElement* state_el = child->FirstChild()->ToElement();

        state = state_el->Attribute( "state" );

        if ("filtered" == state)
            cout << "port: " << port << " is filtered! " << endl;
        else
            cout << "port: " << port << " is unfiltered! " << endl;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用TinyXml解析特定元素 的相关文章

随机推荐

  • 在事务内的 Access 中执行 UPDATE SQL 时超出系统资源

    我正在执行一个简单的UPDATE tblTable SET DataSet 3在一个事务内 但在尝试运行它几秒钟后 我收到 3035 系统资源超出 大约有 30K 行 Dim db As DAO Database wrk As DAO Wo
  • 使用seaborn调整子图的大小

    我最近刚刚开始使用 matplotlib 和 seaborn 来绘制我的图表 这是我到目前为止编写的代码 count 1 l 13 0 47 29 10 plt figure figsize 30 40 for ww in l temp d
  • 如何使用运算符<<打印类对象

    我想为 AutoData 类编写一个打印函数 其中包含有关汽车的信息 通过这个打印函数 我理想地希望打印出包含许多不同类对象的向量 我已经为对象的每个元素编写了 get 函数 但我仍然有点不确定如何使用这些函数来编写函数以以下格式打印数据
  • javafx webview 无法正确显示 html 页面

    当我测试这个示例程序时 webview 无法正确显示 html 页面 第一页 第一个圆圈 显示正确 但 它应该每 10 秒更改一次页面 但事实并非如此 它应该显示图表 当您单击第二个圆圈时 但它没有 它应该显示显示图像 当您单击第三个圆圈时
  • Android Ant 错误:解析为没有项目的 project.properties 文件的路径

    我在 Ant 脚本中执行此操作 我链接一个库项目 更新它们并构建它们 但我不断在标题中收到此错误 有人知道如何解决这个问题吗
  • 我的聪明人有未知标签,但它是合法标签

    目前我更改 smarty 2 gt 版本 3 但我改变后出现了如下问题 SmartyCompilerException Syntax Error in template home test engine mobile9 template t
  • 通过其他表更新第二个表中的数据

    我有 3 个表 我想用第三个表和第四个表更新第二个表中的第一个表 table1和table2中的ID是唯一的 table3和table4中的ID是唯一的 在表2和表3中 uid是唯一的 但我也需要检查另一个值 源 table1 ID val
  • C 中文本查找的通用枚举

    Update 给出的代码确实有效 当我认为没有的时候我就错了 我的错 对不起 如果您可以改进代码 请在https codereview stackexchange com questions 150480 generic enum to t
  • 计算数组的期望,速度改进的建议

    我有一个 N0 N1 N2 N3 矩阵 V 和一个 N1 N1 矩阵 M N1 通常约为 30 50 N0xN1xN2xN3 约为 1 000 000 我想要一个新的 Matrix EV 其中 i0 i1 i2 i3 条目由下式给出 np
  • Chrome 扩展程序中强制代理重新身份验证

    我正在制作一个扩展 允许用户存储具有身份验证凭据 用户 通行证 的代理服务器并在服务器之间切换 我正在听webRequest onAuthRequired事件以及当服务器挑战身份验证时 证明用户已保存的用户名 密码 根据provideCre
  • 如何在iPhone上显示音频表[重复]

    这个问题在这里已经有答案了 我有一个录音机 我想知道是否有人有一个代码来显示音频表 大多数录音机都有的显示输入音频电平的条 Apple s 在这里说话 http developer apple com library ios samplec
  • UDP数据包可以分割成几个较小的数据包[重复]

    这个问题在这里已经有答案了 如果UDP数据包超过MTU 是否可以将其分成几个较小的数据包 MTU 碎片似乎与 IP 层有关 所以我认为可以 如果是这样 建议的最大值是多少 通过 UDP 发送以避免碎片的数据包大小 为什么 任何大于 MTU
  • 声明了本地函数“RestartGame”但从未使用过 Assembly-CSharp

    我真的需要帮助 当我将 Invoke 放入 C 中时 出现以下错误 声明了本地函数 RestartGame 但从未使用过 Assembly CSharp 我真的不知道为什么会发生这种情况 但这是代码 使用Unity引擎 使用UnityEng
  • 相当于 VB 脚本的%username%

    我正在寻找从当前用户的计算机中删除 OfficeFileCache 文件夹 目前我有 Option Explicit Dim obj Set obj CreateObject wscript shell Dim fso Set fso Cr
  • Web Worker:如何防止从缓存加载该文件?

    这非常烦人 我想知道为什么我的更改没有得到反映 因为我注意到我的 Web Worker 的 JavaScript 文件总是从缓存加载 我已禁用缓存并点击Ctrl F5也不行 我怎样才能确保这个文件does not从缓存中加载 worker
  • 如何以编程方式清除/重置 React-Select?

    反应选择V2 and V3似乎有几个道具 例如clearValue resetValue and setValue 无论我尝试什么 我都无法以编程方式清除选择 resetValue从外部似乎无法访问 selectRef setValue c
  • PHP set_time_limit 限制

    QUESTION 如果我使用的话效果会好吗sleep 300 以 5 分钟的间隔完成一整天 24 小时 这意味着 would set time limit 86400 work 然后我可以将主机的时间表设置为每 24 小时仅使用一次 INF
  • 修复使用 Android NDK 和 std::vector 时的 Eclipse 错误

    我正在使用 eclipse 开发一个也使用 ndk 的 Android 应用程序 我在我的应用程序中进行了向量化 并且我已经完成了必要的操作来获取它们 包括 APP STL stlport static 在我的 Application mk
  • Google Play 显示 - 您的设备与此版本的 Samsung Galaxy tab 2 和 Google Nexus 7 不兼容

    当我将应用程序发布到 Google Play 商店并尝试在 Google Nexus 7 上下载它时 我收到消息 您的设备与此版本不兼容 我的清单文件声明如下
  • 如何使用TinyXml解析特定元素

    我想解析一组元素TinyXml输出 本质上 我需要挑选出任何端口元素 portid 端口属性的状态为 open 如下所示为端口 23 最好的方法是什么 以下是 TinyXml 输出的 简化 列表