2017-06-23 6 views
0

私はかなり新しいですWSO2 ESBと私は次のXML文書を生成するのが難しいことを見いだしています。それはかなりうまくいくが、この文書が生成された後、タグのXML属性を削除する必要がある。WSO2 ESBアプリケーションで生成されたタグからXML属性を削除するにはどうすればよいですか?

私は、XML文書を生成し、このシーケンスコード持っている:それは唯一の問題は、そので、正しい

<?xml version="1.0" encoding="UTF-8"?> 
<transfer xmlns="http://ws.wso2.org/dataservice" username="my_user" password="my_pswd"> 
    <providerpid>00AB40</providerpid> 
    <recipientpid>00AD12</recipientpid> 
    <symbol>SMTA1234</symbol> 
    <type>SMTA</type> 
    <materials> 
     <doi>10.0155/1463</doi> 
     <doi>10.0155/1464</doi> 
    </materials> 
</transfer> 

<?xml version="1.0" encoding="UTF-8"?> 
<sequence name="transferSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse"> 
    <payloadFactory media-type="xml"> 
     <format> 
      <ds:FindTransfer xmlns:ds="http://ws.wso2.org/dataservice"> 
       <ds:transferId>$1</ds:transferId> 
      </ds:FindTransfer> 
     </format> 
     <args> 
      <arg evaluator="xml" expression="$ctx:transferId" xmlns:ds="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd"/> 
     </args> 
    </payloadFactory> 
    <header name="Action" scope="default" value="urn:FindTransfer"/> 
    <callout endpointKey="pgrfasEndpoint"> 
     <source xmlns:ns="http://org.apache.synapse/xsd" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> 
     <target xmlns:ns="http://org.apache.synapse/xsd" xmlns:s11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:s12="http://www.w3.org/2003/05/soap-envelope" xpath="s11:Body/child::*[fn:position()=1] | s12:Body/child::*[fn:position()=1]"/> 
    </callout> 
    <enrich> 
     <source clone="true" xmlns:ds="http://ws.wso2.org/dataservice" xmlns:ns="http://org.apache.synapse/xsd" xpath="//ds:transfer"/> 
     <target type="body"/> 
    </enrich> 
    <property name="messageType" scope="axis2" type="STRING" value="application/xml"/> 
    <property name="HTTP_METHOD" scope="axis2" type="STRING" value="post"/> 
    <!-- Store message into message store --> 
    <store messageStore="transferMessageStore"/> 
</sequence> 

このようなXMLドキュメントを生成し、要素はこの属性が設定されていますxmlns = "http://ws.wso2.org/dataservice"

この属性を最も簡単な方法で削除する必要があります(例えば、スクリプトメディエーター(JavaScriptを使用)など)。

どうすればいいですか?

+1

XSLT名前空間なしで同じメッセージを再作成するために、再度、名前空間 – simar

+0

かペイロードメディエーターを削除します。 – simar

+0

http://wso2.com/project/data-services/2.6.3/docs/namespace_handling.htmlをご覧ください。 dssサーバーの空の名前空間を設定しようとする価値がある simar

答えて

1

ペイロード/ XMLをXSLTメディエータに渡し(スタイルシートを使用してコンテンツを変換する)、名前空間を削除することができます。

次のブロックは問題なく機能します。チェックアウト..

<xsl:output method="xml" indent="yes"/> 
    <xsl:template match="@*|comment()|processing-instruction()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="*"> 
    <xsl:element name="{name()}"> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:element> 
    </xsl:template> 
関連する問題