使用 xpath 计算 XML 中的元素数量

2024-03-08

我使用这个优秀的论坛来教自己一些基本的 xpath 来查询 .XML 文件。我这里有一个 XML 文件的示例,我正在尝试使用 Matlab 导入 XML 文件中 3 个对象的 [X,Y] 坐标:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ROI array</key>
    <array>
        <dict>
            <key>Comments</key>
            <string></string>
            <key>Name</key>
            <string>Unnamed</string>
            <key>ROIPoints</key>
            <array>
                <string>{129.24051549947484, 263.66036033996352}</string>
                <string>{114.61421850240453, 278.56760216125258}</string>
                <string>{123.11826208150609, 289.73859978088149}</string>
                            <string>{125.11111111111111, 295.77777777777777}</string>
            </array>
            <key>Slice</key>
            <integer>58</integer>
        </dict>
        <dict>
            <key>Comments</key>
            <string></string>
            <key>Name</key>
            <string>Unnamed</string>
            <key>ROIPoints</key>
            <array>
                <string>{127.09352448499425, 261.31629753478774}</string>
                <string>{112.50917389905675, 277.25509453185805}</string>
                <string>{126.061969309213, 291.36980247863539}</string>
                <string>{141.48499634778722, 292.16234398254164}</string>
                <string>{149.71229126966222, 277.81281090148696}</string>
            </array>
            <key>Slice</key>
            <integer>59</integer>
        </dict>
        <dict>
            <key>Comments</key>
            <string></string>
            <key>Name</key>
            <string>Unnamed</string>
            <key>ROIPoints</key>
            <array>
                <string>{134.32833430087788, 258.21743274101027}</string>
                <string>{117.0812182120107, 266.44891620048293}</string>
                <string>{114.41427180087788, 292.20427203544386}</string>
                <string>{128.80573603427632, 299.11905932792433}</string>
                <string>{147.92307612216695, 299.11905932792433}</string>
                <string>{152.73700281894429, 285.80526996024855}</string>
                <string>{154.32626673495992, 268.51202655204543}</string>
            </array>
            <key>Slice</key>
            <integer>60</integer>
        </dict>
        </array>
</dict>
</plist>

我已成功使用以下 Matlab 代码导出所有坐标:

expression_2 = xpath.compile('plist/dict/array/dict/array/string');
nodeList_2 = expression_2.evaluate(docNode, XPathConstants.NODESET);
for i = 1:nodeList_2.getLength
    node = nodeList_2.item(i-1);
    coordinate_node{i} = char(node.getFirstChild.getNodeValue);
end

有谁知道 xpath 查询,我可以通过该查询来计算每个对象中的 [X,Y] 坐标数量? IE。为第一个对象返回 4 个坐标,为第二个对象返回 5 个坐标,为第三个对象返回 7 个坐标的东西?

谢谢, 吉姆


你走在正确的轨道上。然而,问题是您的代码以平面方式提取所有“字符串”节点,而忽略父“数组”节点。这样你就无法分辨哪个坐标属于哪个对象。

如果您稍微修改代码,以便它以分层方式遍历“数组”和“字符串”节点,它可以像您想要的那样工作:

%// Extract 'array' nodes
expr_array = xpath.compile('plist/dict/array/dict/array');
nodeList_array = expr_array.evaluate(docNode, XPathConstants.NODESET);
C = cell(nodeList_array.getLength, 1);
for k = 1:nodeList_array.getLength

    %// Extract 'string' nodes
    node_array = nodeList_array.item(k - 1);
    expr_string = xpath.compile('string');
    nodeList_string = expr_string.evaluate(node_array, XPathConstants.NODESET);
    coordinates = zeros(nodeList_string.getLength, 2);
    for m = 1:nodeList_string.getLength
        node_string = nodeList_string.item(m - 1);
        s = char(node_string.getFirstChild.getNodeValue); %// Extract string
        coordinates(m, :) = str2num(s(2:end - 1));        %// Convert to numbers
    end
    C{k} = coordinates;
end

现在元胞数组C包含所有坐标(顺便说一下,我将它们转换为数值,以便可以将它们存储在矩阵中并轻松操作):

C{1} =
  129.2405  263.6604
  114.6142  278.5676
  123.1183  289.7386
  125.1111  295.7778

C{2} =
  127.0935  261.3163
  112.5092  277.2551
  126.0620  291.3698
  141.4850  292.1623
  149.7123  277.8128

C{3} =
  134.3283  258.2174
  117.0812  266.4489
  114.4143  292.2043
  128.8057  299.1191
  147.9231  299.1191
  152.7370  285.8053
  154.3263  268.5120

现在,如果您想要每个单元格(对象)中的坐标数,只需执行以下操作:

cellfun(@(c)size(c, 1), C)

你会得到想要的结果:

ans=
    4
    5
    7
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xpath 计算 XML 中的元素数量 的相关文章

  • 优化 MATLAB 代码(嵌套 for 循环计算相似度矩阵)

    我正在 MATLAB 中基于欧几里德距离计算相似度矩阵 我的代码如下 for i 1 N M N is the size of the matrix x for whose elements I am computing similarit
  • 哪种 Java DOM 包装器是最好或最受欢迎的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • magento 删除管理菜单项

    在magento中 是否可以删除管理中的菜单项 我有一个新模块 并将评论和评级拉到一个新部分 我不反对将它们也留在目录部分 但如果可能 并且干净 我想将其从那里删除 将下一行添加到扩展 config xml 文件
  • 如何在 ASP.NET MVC 中将 XML 文件发送到客户端

    在 ASP NET MVC 中 我有一个数据库表 我想在某个视图页面上有一个按钮 如果某个用户单击该按钮 我的应用程序将生成包含数据库中所有行的 XML 文件 然后 应将包含 XML 的文件发送到客户端 以便用户看到下载弹出窗口 同样 我希
  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • 将 XML 数据提取到 php [重复]

    这个问题在这里已经有答案了 我正在尝试从 XML 文件中提取数据 http freegeoip net xml google com http freegeoip net xml google com 您可以看到该文件的内容类似于
  • xml 拉解析器资产 xml

    如何使用拉解析器解析资产文件夹中的本地 XML 文件 我无法让拉解析器工作 它总是抛出 io 异常 我想我无法获取文件的路径或连接到该文件 mixm 我正在尝试各种方法来从 资产 和 资源 加载本地文件 但要按要求回答您的问题 因为其他人似
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 如何使用 SAX Java 解析器读取注释文本

    我只想使用 Java 中的 SAX 解析器读取 XML 文件中对象标记的注释 这是我的文件的摘要
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • matlab部署工具到java包javac错误

    我正在尝试将我的程序包装为与 java 一起使用 我首先尝试了一个简单的 hello world 你好世界 m disp 你好世界 我使用了deploytool并选择了java包 当它到达这一行时 执行命令 javac verbose cl
  • HtmlAgilityPack - 获取文档中的所有节点

    我想使用 HtmlAgilityPack 遍历文档中的所有节点 将要 foreach HtmlNode node in myhtml DocumentNode SelectNodes do 你可以循环遍历myhtml DocumentNod
  • C# MonoGame 有帮助吗? (Content.Load("入侵者");)

    我正在 MonoGame 中使用 Open GL 制作太空入侵者游戏 并且尝试加载已添加到内容文件夹中的纹理 这是一个名为 Invader 的 PNG 文件 我使用的代码是 invader Content Load
  • 使用 XML 时引用未声明的实体异常

    我正在尝试设置 xmldoc 的 innerxml 但出现异常 Reference to undeclaredEntity XmlDocument xmldoc new XmlDocument string text Hello I am
  • 将数据提示堆栈放在轴标签顶部,并在轴位置发生更改后更新轴标签

    此问题仅适用于 unix matlab Windows 用户将无法重现该问题 我在尝试创建位于 y 轴标签顶部的数据提示时遇到问题 下图很能说明问题 正如您所看到的 在 ylabel 附近创建的数据提示将到达 ylabel 文本的底部 而期
  • 加载 highchart 时 Android 错误膨胀类

    我正在尝试加载highcharts via Dialog 下面是我的代码 Gradle implementation com highsoft highcharts highcharts 9 0 1 XML
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • Python 或 C 语言中的 Matlab / Octave bwdist()

    有谁知道 Matlab Octave bwdist 函数的 Python 替代品 此函数返回给定矩阵的每个单元格到最近的非零单元格的欧几里得距离 我看到了一个 Octave C 实现 一个纯 Matlab 实现 我想知道是否有人必须用 AN
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • 具有挑战性的问题 - 使用 PHP 对 XML 数据进行排序

    我有 xml 文件 其中包含大量产品数据 我需要根据我的字段 ProductRange 的数据对我的产品进行排序 ProductRange urldecode GET Range XML 文件数据

随机推荐

  • R函数返回包的许可证?

    我想返回 R 包的描述文件中声明的包许可证 理想情况下我宁愿拥有 CRAN 自动添加到它识别的所有通用许可证中的 URL 我意识到我可以获得 R 本身分发的许可证 license 令人惊讶的是 这不适用于包裹 例如许可证 包名 此数据也不是
  • jEdit 可以用作 IDE 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 两个浏览器选项卡之间共享变量范围? [复制]

    这个问题在这里已经有答案了 我有一个带有 HTML 表单的 Web 应用程序 其中包含一个选择 选项条目 它在包含 200 个项目的演示中运行良好 即使找到您想要的项目很笨拙 但实际上有超过 30000 个项目 这是零件清单 我的第一个想法
  • MySQL:检查某个值是否包含在范围区间内

    我想知道是否可以检查字符串值是否包含在列中 前提是该列包含开始值和结束值 例如 如果表的 NR 列包含以下行 400 50045 76 23 2512 14 19 21 我想找到其中包含值 421 的行 所以答案应该是第一行 这在mysql
  • 位置固定和-webkit-overflow-scrolling:触摸;

    我正在使用 css 技巧让网站感觉像 Cordova 中的应用程序 webkit overflow scrolling touch 然而 这打破了 消失 反弹 我的位置 固定元素 有什么想法吗 仅供参考 Safari 在 ios 8 上运行
  • PHP 全局命名空间别名

    这是场景 我正在将命名空间实现到我的项目中 我有自己的自定义桥接库 它调用 Zend 等其他库来完成繁重的工作 我在自定义桥库中使用完全限定的命名空间没有问题 但希望在控制器 模型和视图中保持代码尽可能简洁 这是我想使用的一些别名的示例 u
  • 使用flask-wtf queryselectfield进行更具体的SQL查询

    我想使用 Flask 和 WTF 创建一个登录表单 应用程序应从数据库表中读取所有用户的昵称并将其显示在 QuerySelectField 中 它确实有效 但我认为我可以以 更好的方式 做到这一点 我有一个这样的数据库表 id nickna
  • 带括号的成员函数地址错误

    我发现了一些有趣的事情 错误消息说明了一切 获取非静态成员函数的地址时不允许使用括号的原因是什么 我在 gcc 4 3 4 上编译它 include
  • Onclick 事件跟踪 Google Analytics Wordpress Visual Composer 插件

    我想添加以下代码以进行 GA 事件跟踪 onclick ga send event eventCategory Contact eventAction ContactRequest 关于此号召性用语 div class vc btn3 co
  • 从 WCF 服务返回 401

    如何从 WCF 服务返回 HTTP 401 如果您正在编程 REST 服务 可以通过以下方式完成 private IWebOperationContext context new WebOperationContextWrapper Web
  • 为什么 Java 中的 contains() 方法不能按预期工作?

    我正在编写一个创建 ArrayList 的方法S Comp包含数组中包含的所有元素allNodes 但不包含在 ArrayList 中solution 其元素全部包含在allNodes 当我打印时solution and allNodes
  • rbind 错误:“名称与以前的名称不匹配”

    作为更大问题的一部分 添加 makeUniqueIDs论证rbind SpatialPolygonsDataFrame对于多边形 ID 相同的情况 我遇到了来自 rbind 的奇怪消息 gt do call rbind xd small E
  • 正则表达式匹配包含n个或更多指定字符的文本

    我需要找到包含超过 10 个 的行 导入 CSV 时出错 因此需要手动更正 我使用的是 Notepad 所以我不需要编写 reqex 来匹配行 只需编写逗号即可 11 100 does not work 也匹配逗号 您需要排除那些具有否定字
  • Python unicode编码问题

    使用Python 2 7 5 所有数据库和表都是 我的代码看起来像这样 import MySQLdb as mdb import urllib2 import sys import logging logging basicConfig l
  • 基于 Trie 的地址簿和按姓名和联系电话进行高效搜索

    基于 trie 数据结构开发地址簿是一种已知的方法 它是一种高效的字符串数据结构 假设如果我们想为基于姓名 数字等的地址簿创建一个有效的搜索机制 那么有效的数据结构是什么 可以基于任何类型的搜索词 无论数据类型如何 实现内存高效和更快的搜索
  • 使用 Boto3 通过 Python 将图像上传到 Amazon S3 的最有效方法

    我正在实现 Boto3 将文件上传到 S3 一切正常 我正在做的过程如下 我从 FileReader Javascript 对象获取 base64 图像 然后我通过ajax将base64发送到服务器 解码base64图像并生成一个随机名称来
  • Android SensorManager 和 Google Fit 原始传感器数据之间的区别?

    对于我的应用程序 我需要读取用户的最新心率以发送每条消息 一个是 Android SensorManager 另一个是 Google Fit 的 Sensors 还有三星的健康应用程序 不要认为这个应用程序会给我需要的数据 因为我不需要过去
  • 如何在 HTML 页面中显示代码(特别是 C++)?

    如何使用 HTML 在网站中显示代码 基本上 我有一个 C 程序 我想在我的网站上分享它 并且我想在页面中显示它 除了使用 HTML 文本之外 还有什么办法可以在 HTML 中显示 C 代码吗 HTML 包括一个名为 code https
  • static_cast<> 和 C 风格转换有什么区别? [复制]

    这个问题在这里已经有答案了 有什么理由更喜欢static cast lt gt 超过 C 风格的铸造 它们相等吗 有什么速度差异吗 C 风格的转换由编译器检查 C 风格的转换不是这样 并且可能在运行时失败 另外 C 风格的转换很容易搜索 而
  • 使用 xpath 计算 XML 中的元素数量

    我使用这个优秀的论坛来教自己一些基本的 xpath 来查询 XML 文件 我这里有一个 XML 文件的示例 我正在尝试使用 Matlab 导入 XML 文件中 3 个对象的 X Y 坐标