问题标签 [xmlslurper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1387 浏览

grails - 如何防止 groovy/XMLSlurper 从节点中剥离 html 标签?

我正在从 POST 响应中读取 HTML 文件并使用 XMLSlurper 对其进行解析。页面上的 textarea 节点有一些 HTML 代码放入其中(非 urlencoded - 不是我的选择),当我读取该值时,Groovy 会删除所有标签。

例子:

当我解析上述内容然后找到(...)“textarea”节点时,它会返回给我:

并且没有任何标签。如何保留标签?

0 投票
1 回答
1544 浏览

groovy - Groovy:XmlSlurper,无法先替换节点并尝试再次附加相同的节点。任何人都面临这个问题

//无法使用 xml slurper 将替换的节点添加回 xml。引发 stackoverflow 异常。现在想好怎么做

0 投票
2 回答
5674 浏览

xml - 使用 XmlSlurper 解析(非常)大的 XML 文件

我是 Groovy 的新手,我正在尝试使用 XmlSlurper 读取一个(相当)大的 XML 文件(超过 1Gb),由于它不会构建整个 DOM,因此它应该可以对大文件产生奇迹在记忆中。

尽管如此,我还是不断收到“OutOfMemoryError : Java heap space”,这让我认为显然有些事情我做错了。我尝试增加 Xmx 设置,但我宁愿解决这个问题,因为之后我可能不得不处理更大的文件。

这是我使用的代码行:

关于出了什么问题的任何提示?

提前致谢,

热雷米。

0 投票
2 回答
3555 浏览

grails - 在 Grails 中将 xml 转换为域对象

我是一个 grails 新手,在一个有趣的项目上工作。我正在序列化这样的类:

尝试使用 XMLSlurper 反序列化一个类,如下所示:

我正在尝试重建这个对象:

从这个xml:

首先,我在获取每个节点的值时遇到问题。我试过 def Seller = new Customer(name:sellerNode.@username) 但这不起作用,因为我认为 @username 需要是一个属性而不是一个元素。其次,我是否必须“手动”解析这个 xml?难道没有更好的方法来自动反序列化这个xml吗?

我已经看过几篇文章,包括这篇文章:将 XML 导入 Grails 域类 ,但是如您所见,我的 xml 没有像这篇文章中的 xml 这样的属性。

谢谢,

0 投票
2 回答
895 浏览

groovy - 如何设置用户代理:new XmlSlurper().parse(URL)

我正在使用Groovy/XmlSlurper向 Web 服务发起请求:

我想设置用户代理让网站知道请求来自哪个项目。

如何设置用户代理?

  • XMLSlurper 的构造函数没有这样的东西。
  • setProperty方法听起来很有趣,但 Google 并没有引出任何与 UA 相关的内容。
  • 我宁愿避免更改代码以放弃 XmlSlurper 以支持另一个库。
0 投票
2 回答
1986 浏览

xml - 使用 XmlSlurper/GPath 查找不区分大小写的 xml 元素值?

我正在使用 XmlSlurper 解析一段 XML,需要找到一个 xml 元素值。这方面的挑战是我并不总是确定 xml 文档中的大小写是否正确,所以我需要以任何可能的方式找到元素。

例子:

获得Elem的价值将是:

但是当外壳不同时我也需要找到它.. 那么有没有一种方法可以在外壳不同时找到 Elem 的值?

0 投票
3 回答
8201 浏览

groovy - 在 Groovy 中使用命名空间正确遍历 XML

我有以下 xml 代码:

我想使用以下伪代码在 Groovy 中进行验证:

但是我似乎无法获得正确的语法和逻辑来尝试针对数据库响应验证定义的值(例如名称)。如果 config_item 声明是正确的,那么可能我对 Groovy 闭包的理解很差。此外,我不确定 XML slurper 或解析器是否更合适,也无法确定到底有什么区别。希望这是对问题的充分描述。

0 投票
2 回答
28992 浏览

groovy - 如何使用soapUI MockService的外部响应文件的相对路径

我做了什么

我正在使用soapUI(3.6.1 免费版)模拟服务为我正在测试的2 个客户端应用程序提供特定数据。通过一些简单的 Groovy 脚本,我设置了一些模拟操作,以根据客户端应用程序发出的请求从特定文件中获取响应。

模拟响应的静态内容是:

操作调度脚本窗格中的 groovy 是:

在此示例中,当客户端应用程序向包含字符串 CategoryA 的模拟服务发出请求时,soapUI 返回的响应是文件 ID_List_CategoryA.xml 的内容

我想要实现的目标

这一切都适用于 groovy 中的绝对路径。现在我想将soapUI项目文件和外部文件的整个集合拉到一个包中,以便于重新部署。从我对soapUI的阅读中,我希望这就像将项目资源根值设置为$ {projectDir}并将我的路径更改为:

...请记住,soapUI 项目 xml 文件位于 C:/soapProject/

到目前为止我尝试过的

所以,这行不通。我尝试了相对路径的变体:

  • ./Test_Files/ID_List_CategoryA.xml
  • /Test_Files/ID_List_CategoryA.xml
  • Test_Files/ID_List_CategoryA.xml

一篇文章指出soapUI可能将项目文件的父目录视为相对路径的根目录,因此也尝试了以下变体:

  • ./soapProject/Test_Files/ID_List_CategoryA.xml
  • /soapProject/Test_Files/ID_List_CategoryA.xml
  • soapProject/Test_Files/ID_List_CategoryA.xml

当这些都不起作用时,我尝试使用 groovy 脚本中的 ${projectDir} 属性,但是所有这些尝试都失败了,并出现“没有这样的属性:类的模拟服务:脚本 [n]”错误。承认,当我试图这样做时,我真的很摸索。

我尝试使用这篇文章和其他文章中的信息:如何使soapUI附件路径相对?

...没有任何运气。在该帖子的解决方案代码中将“test”替换为“mock”(以及其他更改)导致更多属性错误,例如

.. 导致...

我认为我需要什么

我发现的与此问题相关的帖子都集中在soapUI TestSuites 上。我真的需要一个以 MockService 为中心的解决方案,或者至少阐明如何为 MockServices 而不是 TestSuites 以不同的方式处理它。

任何帮助是极大的赞赏。谢谢。标记。

解决方案 - 由GargantuChet提供

以下包括GargantuChet建议的更改,以解决尝试访问 ${projectDir} 属性的问题,并通过在 groovy 脚本范围内定义新的 projectDir 对象来启用相对路径的使用:

0 投票
1 回答
419 浏览

groovy - 像 WHERE 子句一样使用 XmlSlurper 进行选择

给定以下 HTML 片段,我需要为属性等于的meta标签和属性name等于descriptionmeta标签property提取内容属性的文本og:title。我已经尝试过Groovy: Correct Syntax for XMLSlurper to find elements with a given attribute中显示的内容,但它在 Groovy 1.8.6 中似乎不一样。

有没有一种干净的方法来用 GPath 检索这些?

0 投票
1 回答
8865 浏览

xml - Groovy Node.depthFirst() 返回节点和字符串列表?

我希望有人会指出我在这里遗漏的一些明显的东西。我觉得我已经这样做了一百次了,今晚出于某种原因,由此产生的行为让我陷入了困境。

我正在从公共 API 中读取一些 XML。我想从某个节点(“body”中的所有内容)中提取所有文本,其中还包括各种子节点。简单的例子:

所以最终我想遍历所需节点内的树(再次,'body')并提取其自然顺序中包含的所有文本。很简单,所以我只写了这个 Groovy 小脚本……

...继续以“没有方法签名:java.lang.String.children()”而爆炸。所以我在想自己“等等,什么?我要疯了吗?” Node.depthFirst() 应该只返回一个节点列表。我添加了一点“instanceof”检查,果然,我得到了 Node 对象和 String 对象的组合。具体来说,不在同一行的实体内的行将作为字符串返回,即“This contains”和“and”。其他一切都是节点(如预期的那样)。

我可以轻松解决这个问题。但是,这似乎不是正确的行为,我希望有人能指出我正确的方向。