gpt4 book ai didi

java - 使用 dom4j 添加命名空间和命名空间前缀

转载 作者:行者123 更新时间:2023-11-29 03:40:57 26 4
gpt4 key购买 nike

我正在使用 dom4j 更新一个 xml,如下所示。

    SAXReader reader = new SAXReader();
document = reader.read( xmlFileName );

但它会从元素中删除所有命名空间,因此我想手动添加,但当我尝试以下代码时它不起作用。

    Element e1 = root.addElement("jmsProducer");   
e1.addNamespace("AEService", "http://www.tibco.com/xmlns/aemeta/services/2002");

我的 xml 看起来像

    <AEService:jmsProducer objectType="endpoint.JMSPublisher" name="Pub1EndPoint">  
<AEService:wireFormat>aeXml</AEService:wireFormat>

长什么样子

    <AEService:jmsProducer xmlns:AEService="http://www.tibco.com/xmlns/aemeta/services   /2002" objectType="endpoint.JMSPublisher" name="Pub1EndPoint">
<AEService:wireFormat>aeXml</AEService:wireFormat>

非常感谢任何帮助。敲了两天尝试使用 documentfactory 方法仍然没有用。

最佳答案

我意识到这是一个旧线程,在编写答案时 dom4j 可能没有足够的命名空间功能,但看起来 dom4j 现在可以使用我正在使用的版本(1.6 .1).我来这里是为了寻求有关如何使用 dom4j 构建命名空间感知 XML 的帮助,并发布了我的 Java 代码(以构建原始帖子中的 XML 片段)以防它对某人有所帮助。

这是构建它的 Java 代码。

Document xmldoc = DocumentHelper.createDocument();
Namespace aeServiceNs = new Namespace("AEService",
"http://www.tibco.com/xmlns/aemeta/services/2002");
Element root = xmldoc.addElement(new QName("jmsProducer", aeServiceNs))
.addAttribute("objectType", "endpoint.JMSPublisher")
.addAttribute("name", "Pub1EndPoint");
Element wireformat = root.addElement(new QName("wireFormat", aeServiceNs))
.setText("aeXml");
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
XMLWriter xmlwriter = new XMLWriter(System.out, outputFormat);
xmlwriter.write(xmldoc);

产生这个输出:

<?xml version="1.0" encoding="UTF-8"?>

<AEService:jmsProducer
xmlns:AEService="http://www.tibco.com/xmlns/aemeta/services/2002"
objectType="endpoint.JMSPublisher" name="Pub1EndPoint">
<AEService:wireFormat>aeXml</AEService:wireFormat>
</AEService:jmsProducer>

希望这对您有所帮助。

关于java - 使用 dom4j 添加命名空间和命名空间前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191981/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com