嗨孩子這是我做的,用於生成XML代碼:公理的OMElement產生空默認名稱空間
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace nsSequence = factory.createOMNamespace("http://ws.apache.org/ns/synapse", "");
OMElement rootSequence = factory.createOMElement("sequence",nsSequence);
/*<FILTER>*/
OMNamespace nsFilter = factory.createOMNamespace("http://org.apache.synapse/xsd", "ns");
OMElement filter = factory.createOMElement("filter",nsFilter);
OMAttribute regex = factory.createOMAttribute("regex", null, "applID");
OMAttribute source = factory.createOMAttribute("source", null, "get-property('applicationID')");
filter.addAttribute(regex);
filter.addAttribute(source);
/*<THEN>*/
OMElement then = factory.createOMElement("then",null);
filter.addChild(then);
rootSequence.addChild(filter);
生成的代碼是像這樣的:
<sequence xmlns="http://ws.apache.org/ns/synapse">
<ns:filter xmlns:ns="http://org.apache.synapse/xsd" regex="APPP" source="get-property('applicationID')">
<then xmlns=""></then>
</ns:filter>
</sequence>
的XMLNS =」 「在THEN元素內部對我來說是個大問題。
我使用axiom-api 1.2.14 ...我在某處讀到這是其他人遇到的問題(錯誤)(可能已解決?)。 有沒有辦法解決這個問題,以獲得一個乾淨的XML代碼?或者更好地解決它?
解決方法是將名稱空間添加爲屬性:OMAttribute ns = factory.createOMAttribute(「xmlns:ns」,null,「http://org.apache.synapse/xsd」); filter.addAttribute(ns); ...這種方式應該工作...但我認爲這是一個應該報告的錯誤。 – Alex 2015-01-26 22:03:31