如何解析存储在我的 google 驱动器中但以 html 类型突出的 XML 文件?

2024-03-07

如何解析存储在我的谷歌驱动器中但作为 html 类型脱颖而出的 XML 文件?!

我在我的 google Drive 云上保存了源 xml 的副本:我可以解析源代码,但无法解析看起来像 html 类型的 xml 副本! 我有解析错误,例如:元素类型“meta”必须由匹配的结束标记“”终止 或元素类型“a.length”后必须跟有属性规范“">”或“/>” 我分享了https://drive.google.com/file/d/16kJ5Nko-waVb8s2T12LaTEKaFY01603n/view?usp=sharing https://drive.google.com/file/d/16kJ5Nko-waVb8s2T12LaTEKaFY01603n/view?usp=sharing为您提供访问权限并测试我的脚本。 我知道我可以使用cacheService并且它可以工作,但是为了对缓冲进行其他控制,我会尝试这种方式

function xmlParsingXmlStoreOnGoogleDrive(){
     //So , this is the original xml that is good parsed
 var fetched=UrlFetchApp.fetch("http://api.allocine.fr/rest/v3/movie?media=mp4-lc&partner=YW5kcm9pZC12Mg&profile=large&version=2&code=265621")
 var blob=fetched.getBlob();
 var getAs=blob.getAs("text/xml")
 var data=getAs.getDataAsString("UTF-8")
 Logger.log(data.substring(1,350)); // substring to not saturate the debug display this expected code XML:
 /*
    ?xml version="1.0" encoding="utf-8"?>
    <!-- Copyright © 2019 AlloCiné -->
    <movie code="265621" xmlns="http://www.allocine.net/v6/ns/">
    <movieType code="4002">Long-métrage</movieType>
    <originalTitle>Mise à jour sur Google play</originalTitle>
    <title>Mise à jour sur Google play</title>
    <keywords>Portrait of a Lady on Fire </keywords>
 */
 var xmlDocument=XmlService.parse(data);
 var root=xmlDocument.getRootElement();
 var keywords=root.getChild("keywords",root.getNamespace()).getText();
 Logger.log(keywords);  // Display the expected result :"Portrait of a Lady on Fire "

 // And this my copie of the original xml, that i can't parsing
 var fetched=UrlFetchApp.fetch("https://drive.google.com/file/d/1K3-9dHy-h0UoOOY5jYfiSoYPezSi55h1/view?usp=sharing")
 var blob=fetched.getBlob();
 var getAs=blob.getAs("text/xml")
 var data=getAs.getDataAsString("UTF-8")
 Logger.log(data.substring(1,350)); // substring to not saturate the debug display this non expected code HTML !:
 /*
   !DOCTYPE html><html><head><meta name="google" content="notranslate"><meta http-equiv="X-UA-Compatible" content="IE=edge;">
   <style>@font-face{font-family:'Roboto';font-style:italic;font-weight:400;src:local('Roboto Italic'),local('Roboto-Italic'),
   url(//fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1Mu51xIIzc.ttf)format('truetype');}@font-face{font-fam......
 */
 var xmlDocument=XmlService.parse(data); // ABORT WITH THE ERROR: Element type "a.length" must be followed by either attribute specifications, ">" or "/>"
 var root=xmlDocument.getRootElement();
 var keywords=root.getChild("keywords",root.getNamespace()).getText();
 Logger.log(keywords);
}

我读到了这个类似的问题:使用 Google 应用程序脚本解析 XML 文件(存储在 Google Drive 上) https://stackoverflow.com/questions/35873647/parse-xml-file-which-is-stored-on-googledrive-with-google-app-script

“不幸的是,我们无法直接获取 google 驱动器中的 xml 文件”! 这是正确的吗?这是否仅仅意味着我无法实现我的剧本?


  • 您想要从 Google Drive 上的文件中检索数据并使用 XmlService 解析为 XML 数据。
  • 您希望使用 Google Apps 脚本来实现此目的。

如果我的理解是正确的,这个答案怎么样?

修改要点:

  • About var fetched=UrlFetchApp.fetch("https://drive.google.com/file/d/16kJ5Nko-waVb8s2T12LaTEKaFY01603n/view?usp=sharing"),在这种情况下,无法从此端点检索文件内容。如果您想使用 UrlFetchApp 检索文件内容,请使用端点https://drive.google.com/uc?id=16kJ5Nko-waVb8s2T12LaTEKaFY01603n&export=download。这是网络内容链接。
  • 当文件位于您的 Google 云端硬盘中和/或公开共享时,您可以使用以下脚本检索数据DriveApp.getFileById(fileId).getBlob().getDataAsString().

修改后的脚本:

例如,当您共享的示例文件为https://drive.google.com/file/d/16kJ5Nko-waVb8s2T12LaTEKaFY01603n/view?usp=sharing使用后,脚本变成如下。

示例脚本1:

在此模式中,文件内容是从您的共享文件中检索的UrlFetchApp.fetch().

var data = UrlFetchApp.fetch("https://drive.google.com/uc?id=16kJ5Nko-waVb8s2T12LaTEKaFY01603n&export=download").getContentText(); // Modified
var xmlDocument=XmlService.parse(data);
var root=xmlDocument.getRootElement();
var keywords=root.getChild("keywords",root.getNamespace()).getText();
Logger.log(keywords); // <--- You can see "Portrait of a Lady on Fire" at log.
  • 在这种情况下,脚本需要公开共享。如果您想检索文件内容而不共享,请使用访问令牌进行请求。

示例脚本2:

在此模式中,文件内容是从您的共享文件中检索的DriveApp.getFileById().

var fileId = "16kJ5Nko-waVb8s2T12LaTEKaFY01603n"; // Added
var data = DriveApp.getFileById(fileId).getBlob().getDataAsString(); // Added
var xmlDocument=XmlService.parse(data);
var root=xmlDocument.getRootElement();
var keywords=root.getChild("keywords",root.getNamespace()).getText();
Logger.log(keywords); // <--- You can see "Portrait of a Lady on Fire" at log.
  • 16kJ5Nko-waVb8s2T12LaTEKaFY01603n of https://drive.google.com/file/d/16kJ5Nko-waVb8s2T12LaTEKaFY01603n/view?usp=sharing是文件 ID。
  • 在这种情况下,不需要共享该文件。但该文件必须位于您的 Google 云端硬盘中。

参考:

  • Files of Drive API https://developers.google.com/drive/api/v2/reference/files
    • webContentLink:使用基于 cookie 的身份验证在浏览器中下载文件内容的链接。在公开共享内容的情况下,无需任何凭据即可下载内容。
  • 获取文件的 ID(id) https://developers.google.com/apps-script/reference/drive/drive-app#getfilebyidid

如果我误解了你的问题并且这不是你想要的方向,我很抱歉。

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

如何解析存储在我的 google 驱动器中但以 html 类型突出的 XML 文件? 的相关文章

  • 将 xml 转换为 python 字典

    我正在尝试创建一个 dict 类来处理 xml 但陷入困境 我真的没有想法了 如果有人可以指导这个主题 那就太好了 到目前为止开发的代码 class XMLResponse dict def init self xml self resul
  • 未记录的 Sheet API 限制问题

    我已经看过人们遇到类似问题的帖子 但找不到明确的答案 我尝试使用以下代码行检索 264735 个插槽的二维数组 var optionalArguments majorDimension ROWS valueRenderOption FORM
  • 将 HTML 表格转换为 R 数据框

    table cellspacing 1 cellpadding 7 border 1 thead tr td align left valign middle nbsp td td align left 1a My peers make a
  • 如何更改 Google 表格中图表的背景不透明度?

    我想在 Google 表格中设置 Google 图表的透明度或不透明度 就像在 Microsoft Excel 中一样 将图像设置在文本后面 以便文本仍然可读 不过好像该功能不起作用 功能预览 http drive google com f
  • XMLReader - 如何处理未声明的命名空间

    Merged https meta stackexchange com questions 158066 what is a merged question with 如何使用 XMLReader 读取未定义命名空间的 XML 文件 que
  • 从 Wikipedia XML 转储获取静态 HTML 文件

    我希望能够从巨大的 即使是压缩的 英语维基百科 XML 转储文件中获取相对最新的静态 HTML 文件enwiki 最新 pages articles xml bz2 http download wikimedia org enwiki la
  • 为什么对gapi.client.drive.realtime.get的响应为空?

    下面是成功进行身份验证的页面 然后尝试使用drive realtime get 方法以三种方式获取现有实时文档的JSON 导出 console log 调用的结果显示在注释中 ID 为 EXISTING FILE ID 的文件存在 并且已使
  • Gmail 菜单按钮

    我希望编写一个 Google 脚本来存档所有早于某个日期的电子邮件 在该脚本中 我将添加一个自定义按钮 就像在 Google Sheets 中一样 以便我可以运行我的脚本 Google 脚本中是否存在向 Gmail 中的 UI 添加菜单 按
  • 从 google Drive 自行下载 xlsx 文件

    所以 我正在尝试制作一个小脚本 它将使用谷歌驱动器API下载一个Excel文件 通过遵循谷歌API教程 我遇到了两个错误 无法读取未定义的 on 属性 和 请求的转换是不支持 这是代码 const fs require fs const r
  • 如何使用应用程序脚本在 Google 电子表格中移动工作表 [重复]

    这个问题在这里已经有答案了 我想使用应用程序脚本在电子表格中移动工作表 怎么做 最好的直播 你看过吗文档 https developers google com apps script reference spreadsheet sprea
  • 有 Google Keep API 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Google Keep 有 API 吗 我想为 Google Keep 制作一个 Windows 8 应
  • 复制电子表格也会复制所有链接的文件

    当我使用库方法时 我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称 spreadSheet copy newSSName Or myFile makeCopy newNameOfFile 目前 这些方法复制所有链接的表单和表单
  • 如何使用 OnChange() 触发器

    我有一个电子表格以及该电子表格的主副本 每次用户将数据输入单元格时 它都会获取新数据并放入主副本中 然而最近 我注意到一个用户创建了一个新列 该列未被 OnEdit 捕获 于是我查了一下 看到了去年实现的OnChange 但是 我不知道如何
  • 根据单元格值隐藏列

    在我的谷歌电子表格 A 中 我使用 TRANSPOSE 和 IMPORTRANGE 公式的组合从日历电子表格 B 导入数据 以便填写事件的工作时间表 因为每个日期都有 3 个事件空位 但这些空位并不总是被填满 所以我收到了很多过时的列 表格
  • Google电子表格脚本创建特定范围内的数据验证

    我正在尝试这个脚本来创建数据验证 但它总是不起作用 function test validation var Spread SpreadsheetApp getActiveSpreadsheet var Sheet Spread getSh
  • 用于创建文件夹的应用程序脚本无法在共享驱动器中运行

    谷歌应用程序脚本新手在这里 我发现这段代码可以帮助使用 Google Sheet 中的输入在我的个人 Google Drive 中创建文件夹 来源 Youtube 上的 Google Sheet Community 但是 当我尝试在共享的
  • 使用 Promise 对 Google 表格进行多次查询

    我是一名初学者编码器 需要一些帮助来加快我的 Google 表格查询速度 我环顾四周 找不到解决方案 我正在尝试快速对 Google 表格运行 25 个查询 这就是我的尝试方式 对 Google 工作表运行查询 将结果推送到数组 运行不同的
  • 如果行值存在于另一个工作表中,则将其复制到新工作表

    我是 Google 脚本新手 需要创建一个脚本 我找到了这个question https stackoverflow com questions 22008331 google script delete row if a value in
  • 如何在Android中解析xml类型的HTTPResponse

    我有一个 Android 应用程序 我使用 POST 方法来获取响应 这是我的代码 HttpResponse httpResponse httpclient execute httppost HttpEntity resEntity htt
  • 在 JAVA 中使用 SAX 解析器从 XML 文件中提取文本节点

    因此 我目前正在使用 SAX 尝试从我正在处理的大量 xml 文档中提取一些信息 到目前为止 提取属性值确实很容易 但是 我不知道如何从文本节点中提取实际值 例如 在给定的 XML 文档中

随机推荐

  • npm 错误!致命:无法找到“https”的远程帮助程序

    我在跑npm install在远程会话的 React Native 项目中 更具体地说 这npm install是我运行的构建脚本的一部分VSTS代理 https github com microsoft vsts agent 我遇到了这个
  • 在mockito中模拟通用scala方法

    我正在开发一个 Scala 项目 使用 Mockito 作为模拟框架 我想模拟以下通用 Scala 方法 def parseXml T ClassTag xmlUrl URL xsdUrl Option URL Option T 当嘲笑时
  • 用于将十六进制字符串转换为字节数组的预处理器宏

    我已将 AES 128 密钥定义为 IDE 中的构建符号 以便它像这样调用 GCC arm none eabi gcc D AES KEY 3B7116E69E222295163FF1CAA1681FAC 这相当于 define AES K
  • 如何在 html 内使用双百分号(%%variable%%)括起来的 PHP 变量

    我正在修改发送到电子邮件的 html 文件 我需要通过以下方式创建一些检查PHP到变量但是我不知道双倍百分比是多少 我尝试在网上搜索 但我看到的结果甚至与编程无关 我需要确定何时发送另一封邮件 因为我只能在 30 分钟后发送邮件时才能看到输
  • 如何快速更新锚点约束

    我想在 iOS 中创建一个像 android 一样的菜单 我在用着布局限制建立限制条件 当我尝试更新左侧时 我遇到了这个问题约束单击按钮时的图像 它应该动画到单击按钮的位置 谁能帮我 它应该支持横向和纵向 我不想使用第三方代码 也不想使用N
  • log4net 日志正在创建但仍为空

    我正在尝试使用log4net http logging apache org log4net 当我启动应用程序时 它会创建日志文件 但无论我调用多少次Log Info Application Started 它仍然是空的 我研究了谷歌返回的
  • AWS IOT 连接在 IPAD OS v12.1.1 上关闭

    当我们在 ios 版本 12 1 1 上使用 wss 协议连接到 AWS IoT 时 我们能够成功连接到 IoT 但立即我们可以看到 IoT 触发 onError 事件 然后连接关闭 它尝试再次重新连接 但没有任何运气 我们从 IoT 得到
  • Ruby 中的舍入不一致?

    Ruby 的舍入有错误吗 为什么它的行为是这样的 gt gt 1 14 1 15 1 16 map x 1f x gt 1 1 1 1 1 2 gt gt 1 4 1 5 1 6 map x 0f x gt 1 2 2 例如 为什么 1 1
  • 使用 vcpkg 编译 gRPC C++ 示例

    我正在尝试使用与 vcpkg 管理器一起安装的 grpc 来构建和运行 grpc 示例 我通过克隆并查找 grpc 安装了 vcpkg 管理器 如下所示 sudo apt get install y unzip build essentia
  • eclipse appcompat->res->drawable-xxxhdpi 错误

    我刚刚将我的日食更新为SDK 21 我知道每次我创建项目时 Eclipse 也会创建名为appcompat v7 但是appcompat v7显示错误在res drawable xxxhdpi文件夹 这也使我的项目出错 并在控制台显示此警报
  • pip install mod_wsgi,如何设置MOD_WSGI_APACHE_ROOTDIR环境?

    我正在尝试在 Windows 10 中安装 mod wsgi 命令pip install mod wsgi给我错误 RuntimeError No Apache installation can be found Set the MOD W
  • weak_ptr 是如何工作的?

    我明白如何使用weak ptr and shared ptr 我明白如何shared ptr通过计算其对象中的引用数量来工作 如何weak ptr工作 我尝试阅读 boost 源代码 但我对 boost 还不够熟悉 无法理解它使用的所有内容
  • 在调试模式下使用 Intel TBB

    我正在尝试使用英特尔线程构建块调试 C 代码 使用我在此处找到的过程线程构建块中的调试 https stackoverflow com questions 32887113 debugging in threading building b
  • Angular - 如何导航到 .ts 文件中的命名路由器出口

    我有一个侧面导航 在侧面导航中我将其命名为路由器出口 我试图将名为 aside 的路由器出口分配给名为 top words aside 的子组件 但是 它找不到 url 段 报告 component html
  • C++ 友元函数模板重载和 SFINAE 在 clang++、g++、vc++ 中的不同行为(C++14 模式)

    因此 以下代码在 clang 3 8 0 下构建并成功运行 但在 g 6 3 0 和 vc 19 10 24903 0 下均失败 g 和 vc 都抱怨运算符 的重新定义 有谁知道这里哪个编译器有问题 对于无法编译代码的编译器 编译错误的解决
  • 如何找出 PDF 文档中引用了哪些字体以及嵌入了哪些字体

    PDF 文档中的字体存在一些问题 为了解决这个问题 我想检查一下 哪些字体实际上嵌入在pdf文档中 哪些字体只是被引用 有没有一种简单 而且免费 的方法可以做到这一点 pdffonts命令行工具最初来自Xpdf http en wikipe
  • jquery后台只改变一个轴

    我想我的最后一个问题让大家不知所措 所以我会简化一下 我试图仅更改 x 轴的背景位置 默认情况下 如果只定义一个值 则另一个默认为50 所以这个函数 function colorChangePiano var bp background p
  • 链接我的库时未解析的外部符号

    我已经用 VS2010 编译了自己的库文件 lib 但是当我尝试像这样引用它时 pragma comment lib path to lib lib 我不断收到无法解析的外部符号 我做错了什么 到目前为止 pragma comment li
  • 异步odbc好像是同步的

    我正在尝试执行异步数据库查询 但是当我测试我的代码时 它似乎是同步的 我已将问题隔离到我的查询功能 无法弄清楚我做错了什么 我对 aync await 功能还很陌生 所以我可能做了一些愚蠢的事情 这是失败的代码 我正在使用本地安装的 pos
  • 如何解析存储在我的 google 驱动器中但以 html 类型突出的 XML 文件?

    如何解析存储在我的谷歌驱动器中但作为 html 类型脱颖而出的 XML 文件 我在我的 google Drive 云上保存了源 xml 的副本 我可以解析源代码 但无法解析看起来像 html 类型的 xml 副本 我有解析错误 例如 元素类