JAVA 为 xml 的所有元素添加前缀

标签 java xml namespaces

有什么方法可以在 java 中为 xml 的每个元素添加前缀吗?例如,我有以下 xml:

    <node1 xmlns="www.test.com">
       <node2>abc</node2>
       <node3>
           <node3_1>test1</node3_1>
       </node3>
     </node1>

我想将其转换为:

    <test:node1 xmlns test="www.test.com">
       <test:node2>abc</test:node2>
       <test:node3>
           <test:node3_1>test1</test:node3_1>
       </test:node3>
     </test:node1>

有没有简单的方法可以做到这一点?到目前为止我已经尝试过:

 String messageString = message.getPayloadAsString();
 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
 DocumentBuilder builder;  
 Document document = null;
 try  
    {  
        builder = factory.newDocumentBuilder();  
        document = builder.parse( new InputSource( new StringReader( messageString) ) );  
    } catch (Exception e) {  
        e.printStackTrace();  
    } 

    XmlObject inboundMessageObject = XmlObject.Factory.parse(document);
    XmlOptions xmlOptions = new XmlOptions(); 
    Map<String, String> namespaceMap = new HashMap<String, String>(); 
    namespaceMap.put("www.test.com", "test");
    xmlOptions.setSaveSuggestedPrefixes(namespaceMap);

            xmlObject.save(System.out, xmlOptions); 

    String prefixedXML = inboundMessageObject.xmlText(xmlOptions);
    return prefixedXML;

我看到的是,prefixedXML 字符串与 messageString 字符串相同。

最佳答案

尝试

xml = xml.replaceFirst("xmlns=", "xmlns:test=").replaceAll("<(/?)", "<$1test:");

关于JAVA 为 xml 的所有元素添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16148941/

相关文章:

java - 无法检索版本一 java SDK/API 中的待办事项详细信息

c# - Xelement - 获取元素

java - 使用 Ant 构建在 xml 中替换值/版本/日期的占位符

C++ 和 GLM:名称后跟::必须是类或命名空间名称 (Visual Studio 2015)

XML命名空间,无法选择节点

PowerShell - 缩短命名空间名称,以便更轻松地访问类型

java - 检查相机或图像的像素大小

java - 实例化 Fabric-samples 的 Java 链码时出错

java - 绿色像素的颜色无效

ios - 为什么 PhoneGap 会为同一个应用创建不同的 config.xml 文件?