将值合并到巨大的 XML 文件中

2024-03-04

我需要在一些巨大的 XML 文件中查找并组合信息(doc http://www.omegahat.org/RSXML/Overview.html.

从那里添加到示例中,这或多或少是我的文件的样子:

<?xml version="1.0" ?>
<TABLE>
  <SCHOOL>
    <NAME> School1 </NAME>
    <GRADES>
      <STUDENT> Fred </STUDENT>
      <TEST1> 66 </TEST1>
      <TEST2> 80 </TEST2>
      <FINAL> 70 </FINAL>
    </GRADES>
    <TEAMS>
      <SOCCER> SoccerTeam1 </SOCCER>
      <HOCKEY> HockeyTeam1 </HOCKEY>
    </TEAMS>
  </SCHOOL>
  <SCHOOL>
    <NAME> School2 </NAME>
    <GRADES>
      <STUDENT> Wilma </STUDENT>
      <TEST1> 97 </TEST1>
      <TEST2> 91 </TEST2>
      <FINAL> 98 </FINAL>
    </GRADES>
    <TEAMS>
      <SOCCER> SoccerTeam2 </SOCCER>
    </TEAMS>
  </SCHOOL>
</TABLE>

我需要列出每所学校曲棍球队的学生以及球队名称。该示例所需的输出应该是“Fred”、“HockeyTeam1”、“School1”。真实的例子有成千上万的“学校”、“曲棍球队”和“球员”。

如何使用 xmlEventParse 解析文件以提取信息?我尝试从文件中提取所有文本字段,但经过几个小时的等待后仍然没有输出。注意:实际文件比这更加嵌套,因此仅步进固定级别来查找信息是不够的。


我们将使用 XML 包

library(XML)

并创建一个闭包,其中包含一个处理“SCHOOL”节点的函数,以及两个用于在完成后检索结果的辅助函数。 SCHOOL 函数在每个 SCHOOL 节点上调用。如果它找到曲棍球队,它会使用 /SCHOOL/NAME/text() 作为“密钥”,并使用 /SCHOOL/TEAMS/HOCKEY/text() 和 //STUDENT/text() (或 /SCHOOL/GRADES /STUDENT/text()) 作为值。每 100 所(默认情况下)拥有曲棍球队的学校会打印一条消息,以便显示一些进展情况。事后使用“get”函数来检索结果。

teams <- function(progress=1000) {
    res <- new.env(parent=emptyenv())   # for results
    it <- 0L                            # iterator -- nodes visited
    list(SCHOOL=function(elt) {
        ## handle 'SCHOOL' nodes 
        if (getNodeSet(elt, "not(/SCHOOL/TEAMS/HOCKEY)"))
            ## early exit -- no hockey team
            return(NULL)
        it <<- it + 1L
        if (it %% progress == 0L)
            message(it)
        school <- getNodeSet(elt, "string(/SCHOOL/NAME/text())") # 'key'
        res[[school]] <-
            list(team=getNodeSet(elt,
                   "normalize-space(/SCHOOL/TEAMS/HOCKEY/text())"),
                 students= xpathSApply(elt, "//STUDENT", xmlValue))
    }, getres = function() {
        ## retrieve the 'res' environment when done
        res
    }, get=function() {
        ## retrieve 'res' environment as data.frame
        school <- ls(res)
        team <- unlist(eapply(res, "[[", "team"), use.names=FALSE)
        student <- eapply(res, "[[", "students")
        len <- sapply(student, length)
        data.frame(school=rep(school, len), team=rep(team, len),
                   student=unlist(student, use.names=FALSE))
    })
}

我们使用该函数作为

branches <- teams()
xmlEventParse("event.xml", handlers=NULL, branches=branches)
branches$get()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将值合并到巨大的 XML 文件中 的相关文章

  • Blueimp jQuery 文件上传,传递额外的表单数据

    我可以使用一些帮助 我已经设法使 blueimp jQuery 文件上传为我工作 但我仍然绝对是一个新手 我对 jQuery 等知之甚少 所以请尝试将其清晰明了地提供给我尽可能简单 我会尝试具体一点 好的 我想实现的是人们可以上传照片 并为
  • XLConnect 无法确定 JAVA_HOME 错误

    感谢您的帮助 我正在尝试运行 XLconnect 但收到此错误消息 gt library XLConnect lib loc C Users 1144143929 Documents R win library 2 15 Error onL
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • 跨类别和列自动化卡方

    我有一个调查数据框 其中包含几个问题 列 编码为 1 同意 0 不同意 受访者 行 根据 年龄 年轻 中年 老年 地区 东 中 西 等指标进行分类 大约有30个类别总共 3个年龄 3个地区 2个性别 11个职业等 在每个指标中 类别不重叠且
  • w3c规范语法中的减号

    减号是什么意思 14 CharData lt lt gt lt From w3c XML 1 0 规范 https www w3 org TR REC xml dt cdsection 另外 在哪里可以找到与语法语法相关的信息 我很难找到有
  • R,igraph,是否可以用图案填充顶点

    使用 R 和 igraph 绘制图形 我使用颜色来标记顶点类型 请参阅下面的代码 是否可以用图案而不是颜色填充顶点 以便在以彩色和黑白查看时可以区分节点类型 我需要 4 种独特的颜色 图案 colorbrewer 中唯一适合的调色板是这个
  • 无法使用 android.support.v7.widget.AppCompatTextView 实例化以下类

    最近我在 android studio 的应用程序中将我的 sdk 从 25 更改为 26 我在所有 xml 中都遇到了这个奇怪的错误 目前 该错误并没有以我能看到的任何方式影响我的应用程序 但每次我必须编辑或更改 xml 中的某些内容时
  • 更新 xml 标记的属性

    给定一个 xml 文件作为输入 如何使用新的字符串值修改标签的属性 函数是 updateXMLAttribute Document doc String tag String attribute String newValue impl 我
  • 如何读取 XML 文件并从中获取值以在 PHP 编码的 HTML 页面中显示

    我有一个 XML 文件 其中有一些重复的标签 其中包含不同的值 我需要获取这些值并显示在我的网页中 请帮助我得到这个 如果您使用 PHP5 可以查看 SimpleXML 您可以在这里找到介绍教程 http www w3schools com
  • 构造奎因(自我复制功能)

    有没有人构建过 quine 生成自己源文本的副本作为其完整输出的程序 http www nyx net gthompso quine htm http www nyx net gthompso quine htm 在 R 中 quine 标
  • 通过 AJAX 发送 XML

    我在 jQuery 中创建了一个 xml 文档 如下所示 var xmlDocument
  • R中具有特定条件的多列变异

    我有这个数据 M1 M2 M3 UCL 1 2 3 1 5 我想在这种情况下创建新列 如果M1大于UCL MM1将为 UP 否则为 NULL 如果M2大于UCL MM2将为 UP 否则为 NULL 如果M3大于UCL MM3将为 UP 否则
  • 如何对范围内的行进行分组并考虑第三列?

    我有一个遗传数据集 我想对基因组中物理上靠近的遗传变异 行进行分组 我想对每条染色体基因组中某些点范围内的基因进行分组 chrom 我的 点 数据集包含变体 行需要在一定范围内的位置 如下所示 chrom low high 1 500 17
  • 使用矢量相应地更改传单线条的颜色

    无论如何 是否可以根据某些变量的值更改传单线条的颜色 我用谷歌搜索 发现了这个link http hgoebl github io Leaflet MultiOptionsPolyline demo 然而 我想知道是否有一种简单的方法可以在
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • 如何使用 Facet R 添加线条[重复]

    这个问题在这里已经有答案了 所以我有一个多面图 我希望能够向其中添加随每个面而变化的线 这是代码 p lt ggplot mtcars aes x wt geom histogram bins 20 aes fill factor cyl
  • 如何在闪亮的observeEvent中监听多个事件表达式

    我想要两个不同的事件触发观察者 有人建议here https stackoverflow com questions 34731975 how to listen for more than one event expression wit
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s
  • ODE 时间 Matlab 与 R

    如果在 matlab 中使用可变时间步长求解器 例如 ODE45 我会定义输出的时间跨度 即times 0 50 matlab 将返回 0 到 50 之间不同时间步长的结果 然而在 R 中 我似乎必须定义我希望 ODE 返回结果的时间点 即
  • R 中舍入到下一个数量级的算法

    如果标题不清楚 我很抱歉 但我无法简洁地解释它 给定一个浓度向量 我想将最大值四舍五入到下一个数量级 即 345 到 1000 另外 我想将最小值四舍五入到较低的数量级 即 3 2 到 1 这些浓度也可能低于 1 因此例如 0 034 需要

随机推荐

  • OpenGL ES 1.1:如何在不损失亮度的情况下更改纹理颜色?

    我希望能够在代码中更改粒子的颜色 因此可以使用任何颜色 所以我只有一种基本上具有亮度的纹理 我一直在使用glColor4f 1f 0f 0f 1f 应用颜色 我尝试过的每个 Blendfunc 都接近工作 最终都像下面的最后一张图片一样 我
  • 向下滚动到div+一定的边距

    我正在使用此脚本滚动到页面上的某个 div button click function html body animate scrollTop scrolltothis offset top 500 工作完美 这会将页面滚动到 scroll
  • Unix C 套接字服务器不接受连接

    事情是这样的 我正在用 C 语言 使用 unix 系统调用 编写一个简单的 tcp 套接字服务器 但我无法接受连接 据我所知 我很好地完成了服务器初始化 但是当我尝试连接到我打印出来的端口 参见下面的代码 时 它拒绝了 就好像什么都没有一样
  • CKEDITOR:如何转换所有 html 实体

    这是清单 http www elizabethcastro com html extras entities html http www elizabethcastro com html extras entities html我要么想启用
  • 运行混淆代码时是否会影响性能? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 All 我建议在我的组织的标准构建过程中添加代码混淆 人们提出的问题之一是 与运行未混淆的代码相比 运行混淆的代码是否会对性能产生影响
  • C#:使用 Winforms 关闭 SerialPort 的正确方法

    我有一个应用程序 我可以从串行端口读取数据 一切正常 直到我关闭该应用程序 当我单击 X 时 应用程序只是挂起 UI 无响应 我从 DataReceived 事件处理程序中的端口读取数据 并在 FormClosed 发生时关闭端口 priv
  • 我是否应该始终在 ASP.NET Core API 控制器中使用 async/await [重复]

    这个问题在这里已经有答案了 作为一个例子 我有一个ASP NET Core API controller从服务中获取一些数据并2实现控制器方法的可能方法 使用异步 等待 HttpGet public async Task
  • Android 布局与 sw600dp 和 sw720dp

    我想支持600dp我的 Android 应用程序中的屏幕 所以我使用了该布局layout sw600dp 但我无法通过应用程序获得确切的布局 I got 800 X 1280屏幕尺寸与layout sw720dp但布局有点差720 X 12
  • 将视图控制器分配给prepareForSegue中的变量时,Swift EXC_BREAKPOINT

    当尝试使用我的destinationViewController 执行变量赋值时 我收到错误 错误信息是这样的 线程 1 EXC BREAKPOINT 代码 EXC I386 BPT 子代码 0x0 这在我的prepareForSegue函
  • 推荐?对于我们特定的 HTML -> PDF 项目

    我有一个问题 我从谷歌搜索中看到这个问题已经被详细讨论过 但我想知道你会根据我们的特殊需求推荐什么 我希望在一周的工作后发现我选择了错误的工具之前走在正确的轨道上 一个可以工作的工具 但其特殊性最终会在我们的项目中排除它 我已经在 Stac
  • 按名称(而不是 ID)直接链接到 App Store 中的评论页面

    我想知道如何直接链接到我的 iOS 应用程序的评论页面 而不知道应用程序 ID 只知道名称 我知道可以通过使用链接到没有应用程序 ID 的应用程序 itms apps itunes com apps APPNAME 您可以链接到评论页面 但
  • 为什么 lambda 函数默认删除推导的返回类型引用?

    在 C 14 中 为什么具有推导返回类型的 lambda 函数默认会删除返回类型中的引用 IIUC 因为具有推导返回类型 没有显式尾随返回类型 的 C 14 lambda 函数的返回类型为auto 它会删除引用 除其他外 为什么做出这个决定
  • Android ZBar 异常仅适用于 Jenkins 构建

    我有一个带有 QR 扫描活动的 Android 项目 我为此使用 ZBar 库 http sourceforge net projects zbar files AndroidSDK http sourceforge net project
  • 将空字符串输入转换为浮点数

    我编写了这样的代码来查找用户输入的数字的算术平均值 但由于某种原因 程序最终无法将字符串转换为浮点数 我应该改变什么 print I m going to find the arithmetical mean n jnr 0 sum 0 n
  • 检测媒体扫描仪是否在 Android 上运行

    有没有办法检测 MediaScanner 现在是否正在运行 例如 如果 mediascanner 正在运行 线程将休眠 200 milis 谢谢 使用下面的代码 public static boolean isMediaScannerSca
  • 是否有与背景大小等效的内容:图像元素的 cover 和 contains ?

    我有一个包含许多页面和不同背景图片的网站 我通过 CSS 显示它们 例如 body page 8 background url img pic jpg no repeat scroll center top 000 background s
  • 如何在 javafx 中的 FlowPane 周围制作简单的实心边框

    我正在 javafx 中构建一个简单的应用程序 并且我希望能够向 FlowPane 添加边框 我在java方面比javafx有更多的经验 所以我试图找到相当于 setBorder BorderFactory createEmptyBorde
  • 如何在 jQuery 中选择一系列元素

    div a a a a a a a a a a a a div 如果你想选择第二 第三 第四a上面例子中的标签 你会怎么做 我唯一能想到的是 myDiv a eq 1 myDiv a eq 2 myDiv a eq 3 但这看起来并不是非常
  • 如何使用 Express 和 NGINX 设置路由?

    我正在尝试使用 NGINX 作为反向代理来配置 Express 服务器 NGINX 提供静态文件 Express 提供动态内容 问题 正常的根链接有效 website com 但是当我导航到 website com api 时 我从 NGI
  • 将值合并到巨大的 XML 文件中

    我需要在一些巨大的 XML 文件中查找并组合信息 doc http www omegahat org RSXML Overview html 从那里添加到示例中 这或多或少是我的文件的样子 table table