如何打印保留命名空间的 groovy 节点?

2023-11-22

当我使用此代码输出一些 XML 时,我解析(并修改)了XmlParser

XmlParser parser = new XmlParser()
def root = parser.parseText(feedUrl.toURL().text)
def writer = new StringWriter()
new XmlNodePrinter(new PrintWriter(writer)).print(root)
println writer.toString()

根节点上的名称空间声明不会被打印,即使它们存在于toString() of root... 有任何想法吗?


我刚刚遇到了同样的问题,经过一番摆弄后我找到了解决方法。

您使用XmlSlurper而不是Xml解析器并使用流标记生成器代替Xml节点打印机。然后你利用闭包bind并使用mkp用于声明名称空间的内置变量。

例如;使用上面 Ted 的源 xml 示例:

def root = new XmlSlurper().parseText("http://stackoverflow.com/feeds/question/227447".toURL().text))
def outputBuilder = new StreamingMarkupBuilder()
String result = XmlUtil.serialize(outputBuilder.bind {
    mkp.declareNamespace('':'http://www.w3.org/2005/Atom')
    mkp.declareNamespace('creativeCommons':'http://backend.userland.com/creativeCommonsRssModule')
    mkp.declareNamespace('re':'http://purl.org/atompub/rank/1.0')
    mkp.yield root }
)
println result

结果是 :

<?xml version="1.0" encoding="UTF-8"?><feed xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns="http://www.w3.org/2005/Atom" xmlns:re="http://purl.org/atompub/rank/1.0">
<title type="text">How do I print a groovy Node with namespace preserved? - Stack Overflow </title>
<link rel="self" type="application/atom+xml" href="http://stackoverflow.com/feeds/question/227447"/>
<link rel="alternate" type="text/html" href="http://stackoverflow.com/questions/227447"/>
<subtitle>most recent 30 from stackoverflow.com</subtitle>
<updated>2011-02-16T05:13:17Z</updated>
<id>http://stackoverflow.com/feeds/question/227447</id>
<creativeCommons:license>http://www.creativecommons.org/licenses/by-nc/2.5/rdf</creativeCommons:license>
<entry>
<id>http://stackoverflow.com/questions/227447/how-do-i-print-a-groovy-node-with-namespace-preserved</id>
<re:rank scheme="http://stackoverflow.com">2</re:rank>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何打印保留命名空间的 groovy 节点? 的相关文章

随机推荐

  • 将项目附加到可变参数函数包装器而不重新分配新切片

    好的 我需要一个 fmt Printf 的小包装以方便调试 1 调用 fmt Fprintln 时参数过多 func Debug a interface if debug fmt Fprintln out prefix sep a 2 接口
  • 将 Django 连接到 Google Cloud SQL

    我正在尝试将 Django 连接到 Google 云 SQL 在 Windows 下使用 python 2 7 和 django 1 5 我浏览了此页面上的说明 https developers google com appengine d
  • 无需递归函数调用的排列

    要求 算法生成集合的所有可能组合 不重复 或递归调用函数返回结果 大多数 如果不是全部的话 的答案在JavaScript 中的排列 从循环或其他函数中递归调用函数以返回结果 循环内递归函数调用的示例 function p a b res v
  • phpMyAdmin 不显示添加的列

    自从我得到 phpMyAdmin 3 5 2 2 以来 出现了一个奇怪的问题 当我向特定表添加新列时 它不会显示在概述中 这个问题只出现在一张表上 其他都正常 在设置中找不到某些内容 我也有过这样的经历 XAMPP 1 8 1 PHP 5
  • 使单个函数适用于列表、字节字符串和文本(或许还有其他类似的表示形式)

    我正在编写一个函数 它可以在任意符号序列中进行一些搜索 我想让它足够通用 以便它可以在列表上运行 Foldable以及ByteStrings and Texts 将其概括为Foldable很简单 但如何包含ByteStrings and T
  • 等待 .NET 4.0 中的替代方案?

    NET 4 0 中await 关键字的最佳替代方案是什么 我有一个方法需要在异步操作后返回一个值 我注意到 wait 方法完全阻塞了线程 从而使异步操作变得无用 我可以选择哪些选项来运行异步操作 同时仍释放 UI 线程 我认为你的基本选择是
  • 为什么嵌套实例化中没有可用的 TypeTag(当由 scala 代码运行程序解释时)?

    我正在尝试改变的行为List toString根据其类型参数 自从List无法扩展 它由自定义类包装CList 可能是隐含的 但问题仍然是一样的 打印时出现问题CList of CLists 以下是示例和注释中的相应输出 object Fo
  • hibernate、mysql、glassfish v3 和 JTA 数据源

    我正在尝试将 hibernate 实体管理器与 mysql 和 glassfish 一起使用 尝试使用 JTA 数据源时出现以下错误 Caused by org hibernate HibernateException The chosen
  • Docker RUN ls 显示缓存文件

    我正在尝试设置一个 docker 容器并正在使用RUN ls帮助调试 然而 当我跑步时RUN ls docker 打印出以下内容 gt Using cache gt 96223b1b0748 我希望它注销文件夹中的文件 有谁知道会发生什么
  • 创建一个带有 Action 多个参数的任务

    我想在包含操作的任务中添加多个参数 我回顾了现有的堆栈溢出问题使用操作创建任务 请帮助我如何在任务的操作方法中传递多个参数 Action
  • 使滚动条在移动浏览器中可见

    当我有一个带有可滚动内容的网页时 使用CSS属性 overflow auto 或 overflow visible 滚动条在桌面浏览器上可见 但是当我在移动浏览器上打开页面时 滚动条仅在我尝试滚动时才会出现 有没有办法让滚动条在移动设备上始
  • Rails 中的 PG pg_ext 加载错误

    我最近更新到了 Rails 4 1 6 和 ruby 2 1 3p242 我还更新了系统上的所有宝石 创建新应用程序后 我在运行服务器时不断收到 pg ext 加载文件错误 我使用的是 Windows 8 x64 和 PostgreSQL
  • 在 JavaScript 中指定 eval() 的范围?

    有什么方法可以在特定范围内执行 eval 但不是全球性的 例如 以下代码不起作用 第二条语句中 a 未定义 因为它们位于不同的范围内 eval var a 1 eval alert a 如果可能的话 我想动态创建一个范围 例如 语法肯定是错
  • 我可以将变量从 Bash 脚本导出到环境中而不需要获取它吗?

    假设我有这个脚本 导出 bash usr bin env bash export VAR HELLO VARIABLE 当我执行脚本并尝试访问 VAR 我没有得到任何价值 echo VAR 有没有办法访问 VAR只需执行export bas
  • 获取通过“attr_accessor”定义的所有变量,而不覆盖“attr_accessor”

    我正在我的程序上设置一些跟踪代码 并且想知道哪些方法是通过定义的attr accessor Using TracePoint 我可以检测到什么时候attr accessor被调用 但我不知道如何让它告诉我它收到的参数 有任何想法吗 在问题标
  • 使用 python 将字典列表插入 SQL 表中

    我正在使用 python 和 sql 数据库迈出第一步 但仍然不确定要使用哪个包以及如何使用 我有一个包含大约 300k 个字典的列表 每个字典大约有 20 个键 这些字典应插入到 SQL 表中 在我看来 字典方法列表的优点是 我明确命名要
  • JUnit 测试未启动 Android 服务

    我有这个测试类来测试远程服务 public class CoreServiceBasicTest extends ServiceTestCase
  • RIA 服务与 WCF 服务

    我正在重写一个 LOB 应用程序 其架构如下 Silverlight Windows Mobile gt WCF gt 实体框架 gt 数据库 移动应用程序应该能够像 silverlight 应用程序一样执行某些操作 在这里使用 RIA 服
  • C++ 中向量是通过值还是通过引用传递给函数

    我正在用 C 编码 如果我有一些功能void foo vector
  • 如何打印保留命名空间的 groovy 节点?

    当我使用此代码输出一些 XML 时 我解析 并修改 了XmlParser XmlParser parser new XmlParser def root parser parseText feedUrl toURL text def wri