问题标签 [streamingmarkupbuilder]
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.
groovy - 如何使用 StreamingMarkupBuilder 在 Groovy 中将节点动态添加到 XML
我正在尝试使用 Groovy 动态创建 XML 文件。我对一切工作的简单性感到满意,但我很难理解闭包和委托背后的整个机制。虽然添加具有固定名称的属性和子节点似乎很容易,但添加具有动态名称的节点似乎是一种特殊情况。
我的用例是创建一个 _rep_policy 文件,可以在 CQ5 中使用。
处理集合工作正常,但生成名称......
导入 groovy.xml.StreamingMarkupBuilder 导入 groovy.xml.XmlUtil
xml - 在 Groovy StreamingMarkupBuilder 的输出中添加换行符
我正在 Groovy 中创建一个巨大的 xml 文件。我正在使用 StreamingMarkupBuilder,因为常规的 MarkupBuilder 使我耗尽了 Java 堆空间。我正在寻找一种在 StreamingMarkupBuilder 中插入换行符或在创建流时对其进行解析的方法。我无法将整个流写入变量,它太大了。这是我正在做的事情的近似值:
如果您有任何澄清问题,请告诉我,我很高兴与您合作。
xml - 为什么 StreamingMarkupBuilder 在编写大型文档方面比 MarkupBuilder 表现更好
我在几个地方读到 StreamingMarkupBuilder 比 MarkupBuilder 更适合编写大型 XML 文档。但是,我一直无法找到一个明确的答案来解释为什么会这样。
有人可以解释为什么 StreamingMarkupBuilder 在编写大型文档方面比 MarkupBuilder 表现更好吗?
xml - 在 Groovy 中使用 StreamingMarkupBuilder().bind{} 中的字符串变量
对于以下代码:
现在,如果我在上面的代码中有“MyTag('Help Me')”作为字符串 var 并想使用如下所示
是 groovy 的新手,有人帮助我正确实施或找到上述案例的错误吗?如果我必须使用 StreamingMarkupBuilder 和 XmlMarkupBuilder 以外的其他类,请告诉我?请注意,在我的实际场景中,文本变量实际上包含更多嵌套的子节点。
java - 从 StreamingMarkupBuilder 内部调用方法
我正在使用 Groovy 的StreamingMarkupBuilder根据几个 SQL 查询的结果动态生成 XML。我想从闭包内部调用一个方法,但标记生成器尝试使用方法名称创建一个 XML 节点。
这是我正在尝试做的一个例子:
这将生成类似于以下内容的 XML:
我已经尝试将方法移出一个类并在该类上静态调用,这也不起作用。
由于 StreamingMarkupBuilder 工作方式的性质,我担心它实际上不可能做到这一点,但我希望它是。
xml - Groovy XML:如何解析、修改和序列化 GSP 文件的内容。(org.xml.sax.SAXParseException,前缀未绑定)
在我问这个问题之前,我将提供一些关于我实际尝试做的事情的信息:
我需要在我的 grails 项目中重构大量 GSP 文件。在我尝试为此编写自己的 groovy 脚本后——并意识到这对于我目前的任何语言技能水平来说都太过分了——我发现了这篇文章,它对我解析 html 内容有很大帮助。
过了一会儿,我整理了自己的脚本来解析一个 html 文件,再次序列化它并将其保存到一个新文件中。这是我的脚本:
请注意,我不想在我的 GSP 文件中使用 XML 序言;因此,我使用正则表达式删除它(这不是我的问题,但如果有人知道更“时髦”的方式来做到这一点,请告诉我!)
此外,我设置namespacesFeature
为 false,因为命名空间对我的目的没有用。
因为这就像 HTML 文件的魅力一样,我想我已经准备好递归地遍历我的文件夹并找到所有具有该名称的 GSP 文件list.gsp
并自动重构它们。但是当我尝试用 one 测试它时,由于元素list.gsp
的未绑定前缀,序列化失败:g
g:set
The prefix "g" for element "g:set" is not bound.
现在,我有点明白我要做的不是 XML 解析和序列化的常规目的。但就我而言,我不仅希望禁用命名空间功能,还希望解析器忽略所有 GSP 标记并将它们视为常规的开始和结束标记;换句话说,忽略任何标签中的双点。
我关心的另一件事是表达语言,例如<%@ page import="<class>" %>
. 现在我刚刚收到前面提到的异常,但这可能也需要解决。
非常感谢任何帮助。
xml - Groovy StreamingMarkupBuilder:: 绑定前评估
我正在使用 StreamingMarkupBuilder 生成 XML。我试图考虑在我的数据中有错误导致 NullPointerException 的情况。这就是我的数据当前的构建方式:
当我在 buildMetadata 中获得 NPE 时,该过程中途停止,生成无效的 XML。
我需要的是不包括错误的记录,所以我正在尝试这样的事情:
所以在我的方法中,我尝试分解添加到主要结构中的部分,这样我就可以忽略错误的记录。
评估是.bind()
随叫随到的,这已经太晚了。def output = new StreamingMarkupBuilder().bind(single_rec_builder)
如果我尝试更早地强制评估,通过在我得到命名空间错误之前添加类似的东西mkp.bind()
,因为这些是在 mkp 上定义的。是否有某种“空运行”或另一种更好的方法来解决这个问题?
xml - 在groovy中定义XML时如何格式化数据?
我对 Groovy 很陌生,在定义 xml 时找不到在 groovy 中格式化/编辑数据的正确方法。我想将我的日期格式化为某种自定义格式,但我不能从这个闭包中调用任何方法,所以以下失败:
谢谢
xml - 使用 Groovy 构建 XML
我需要从每个标签中删除“tei:”。我的原始 xml 如下所示:
当我运行我的脚本时,我得到了相同的输出,但每个标签中都有“tei:”:
我正在尝试为每一行添加一个不用作标题且不标记标尺更改的值。我的代码是:
如何防止我的脚本对我的 xml 文件进行这种不需要的更改。
groovy - 使用 groovy 构建 xml 和合并 CDATA xml
我有 mule 流,它将 xml 存储在会话变量中。我希望将此 xml 插入在 groovy 中生成的 xml 中。
我的会话变量看起来像#[sessionVars.shippingdetails]
这个会话变量有<a><Subject1>science</Subject1><Subject2>Maths</Subject2></a>
当我在我的 xmlmarkup 构建器中使用会话变量时,如下所示。我收到错误groovy.lang.GroovyRuntimeException: Namespace prefix: CDATA is not bound to a URI (javax.script.ScriptException). Message payload is of type: CaseInsensitiveHashMap (org.mule.api.transformer.TransformerMessagingException). Message payload is of type: CaseInsensitiveHashMap
因此我的输出 xml 应该如下所示。