使用 XML DOM 添加命名空间前缀 XML 字符串

2023-12-07

我想使用 XML DOM 将命名空间前缀添加到 XML 字符串中的所有元素。 例如。 我的字符串是这样的:

<root> 
       <operation>test string</operation> 
       <data> 
              <parameter> 
                     <name>test string</name> 
                     <value>test string</value> 
                 </parameter> 
              <parameter> 
                     <name>test string</name> 
                     <value>test string</value> 
                 </parameter> 
              <parameter> 
                     <name>test string</name> 
                     <value>test string</value> 
                 </parameter> 
          </data> 
   </root>

我想要一个输出 XML:

<ns0:root xmlns:ns0 = "http://www.tibco.com/schemas/BWStatistics-hawk/Schema.xsd2"> 
       <ns0:operation>test string</ns0:operation> 
       <ns0:data> 
              <ns0:parameter> 
                     <ns0:name>test string</ns0:name> 
                     <ns0:value>test string</ns0:value> 
                 </ns0:parameter> 
              <ns0:parameter> 
                     <ns0:name>test string</ns0:ns0:name> 
                     <ns0:value>test string</ns0:value> 
                 </ns0:parameter> 
              <ns0:parameter> 
                     <ns0:name>test string</ns0:name> 
                     <ns0:value>test string</ns0:value> 
                 </ns0:parameter> 
          </ns0:data> 
   </ns0:root>

我怎样才能在Java中最佳地实现这一点?


我们可以用 Transformer + SAX 来完成。尝试这个:

    import java.io.StringWriter;

    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.sax.SAXSource;
    import javax.xml.transform.stream.StreamResult;

    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLFilterImpl;
    import org.xml.sax.helpers.XMLReaderFactory;

    public class Test {

        public static void main(String args[]) throws Exception {
            XMLReader xmlReader = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
                String namespace = "http://www.tibco.com/schemas/BWStatistics-hawk/Schema.xsd2";
                String pref = "ns0:";

                @Override
                public void startElement(String uri, String localName, String qName, Attributes atts)
                        throws SAXException {
                    super.startElement(namespace, localName, pref + qName, atts);
                }

                @Override
                public void endElement(String uri, String localName, String qName) throws SAXException {
                    super.endElement(namespace, localName, pref + qName);
                }
            };
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer t = tf.newTransformer();
            StringWriter s = new StringWriter();
            t.transform(new SAXSource(xmlReader, new InputSource("test.xml")), new StreamResult(s));
            System.out.println(s);
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XML DOM 添加命名空间前缀 XML 字符串 的相关文章

  • 在 Python 中按标题将 docx 拆分为单独的文件

    我想编写一个程序来获取我的 docx 文件 迭代它们并根据标题将每个文件拆分为多个单独的文件 每个 docx 中都有几篇文章 每篇文章都有一个 标题 1 及其下方的文本 因此 如果我的原始 file1 docx 有 4 篇文章 我希望将其分
  • Spring安全+LocaleResolver

    我需要在身份验证成功后更改区域设置 区域设置解析器
  • 查找所有数组的长度多维数组,Java

    我想使用多维数组来存储数据网格 但是 我还没有找到一种简单的方法来查找长度2nd数组的一部分 例如 boolean array new boolean 3 5 System out println array length 只会输出3 是否
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • 在 json 中解析尾随字符

    我正在尝试检查 json 是否有效 并且我遇到了奇怪的行为 当我将一些字符附加到可解析的 json 时 jackson 和 gson 都会解析它 并且它们会忽略尾随字符 我想检查 json 是否严格有效 请帮忙 我尝试了几个标志mapper
  • Eclipse 无法识别 persistence.xml 的内容

    我在 eclipse 中收到以下错误 persistence xml 文件没有可识别的内容 我的 persistence xml 文件在我的应用程序中工作得很好 但 eclipse 一直给我这个错误 我在移动文件并使用 m2eclipse
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 在 java 8 下使用泛型出现类型错误,但在 java 7 下则不然

    我有一段代码可以在 java 7 下编译良好 但不能在 java 8 下编译 这是一个独立的重现示例 我已经采用了显示此问题的真实代码并删除了所有实现 import java util Iterator class ASTNode
  • java.lang.ClassNotFoundException: org.jboss.logging.Logger

    我有一个奇怪的问题 我有一个JMS https en wiktionary org wiki JMS客户端应用程序和MDB https en wikipedia org wiki Enterprise JavaBeans Message d
  • 不使用 length() 方法的字符串长度[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何在不使用字符串的情况下找到字符串的长度length String类的方法 str toCharArray length应该管用 或者怎么
  • 将 Maven 控制台与 m2eclipse 一起使用

    Maven 新手在这里 有没有办法在 Eclipse 中打开控制台并在 M2Eclipse 插件上执行 Maven 命令 这是一个非常好的插件 但我环顾四周 没有找到我想要的一些功能 谢谢 如果你想运行特定的maven插件 你可以这样做 g
  • IntelliJ - 无效源版本:17

    我已经在 IntelliJ 中使用 Gradle 创建了一个使用 Java 17 的新 Java 项目 运行我的应用程序时出现错误Cause error invalid source release 17 我的设置 我已经安装了openjd
  • Eclipse Juno 指标插件

    Eclipse JUNO 版本有哪些 Eclipse 指标插件 我尝试了一些通用指标插件 但没有一个能够在 Eclipse 的 JUNO 版本中正常运行 差点忘了 我们正在使用 Java 作为编程语言 我想要诸如圈复杂度 代码行数 方法长度
  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • 如何从 Sublime Text 编辑器调试 Java 应用程序

    有时我正在对相当大的 Java 应用程序进行简单的修复 但我不想打开 Eclipse 来执行此任务 Eclipse 启动时间很长 并且由于该项目是由大量子项目构建的 而这些子项目无论如何都是由 Maven 构建的 因此需要很长时间才能使用
  • 空检查时可能未初始化错误

    我正在检查变量是否已初始化 但此时 netbeans 给了我variable reader might not have been initialized警告 我该如何解决 抑制这个问题 这是我的代码 摘要 final Reader rea
  • Java有没有类似微软CHESS的工具?

    是否有类似于 Microsoft 的现有 Java 工具CHESS http research microsoft com chess 或者 CHESS 源代码是否开放 以便我可以尝试将其转换为 Java 谷歌的织线工 http code
  • 需要在没有wsdl的情况下调用soap ws

    我是网络服务的新手 这个网络服务是由 siebel 提供的 我需要调用一项网络服务 我的客户向我提供了以下详细信息 这是 SOAP 对于产品 请使用它作为端点 Request
  • 将其元素添加到另一个列表后清除列表

    我正在做一个程序 它获取更多句子作为参数 我制作了 2 个列表 一个称为 propozitie 其中包含每个句子 另一个称为 propozitii 其中包含所有句子 问题是 当我在遇到 后清除 propozitie 列表时 它也会清除 pr
  • removeall 和removeif 的用例

    我找到了这个 fun main val list MutableList

随机推荐