使用XMLMap在命名空间内使用命名空间输出XML

时间:2017-04-17 08:59:52

标签: xml sas

我需要创建一个类似于下面文本的XML输出:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Requests>
    <RequestSetId>20170321</RequestSetId>
    <RequestStream>Anniversary</RequestStream>
    <ns0:Request xmlns:ns0="http://www.sample.com/xsd/BatchCenter_001">
        <ns0:TrackAndTrace>
            <ns0:CPAId>017</ns0:CPAId>
            <ns0:ConversationId>bd48928c-8f5e-4a3d-e85b-2c5d67a5f0d1</ns0:ConversationId>
            <ns0:EventId>4c8adceb-a48c-41b1-9ebc-a9d90507447e</ns0:EventId>
            <ns0:CorrelationId>e85b928c-8f5e-4a3d-bd48-2c5d67a5f0d1</ns0:CorrelationId>
        </ns0:TrackAndTrace>
        <ns2:SendCustomerMessage_001_Rq xmlns:ns2="http://www.sample.com/CustomerCommunication_001/SendCustomerMessage_001">
            <ns2:Location>
                <ns2:Purpose>ForceEmail</ns2:Purpose>
                <ns2:OutputProfile>HRM_OutputProfile_Batch</ns2:OutputProfile>
                <ns2:ContactForm>
                    <ns2:CustomerMessageAddress>
                        <ns2:EmailAddress>NAME.LASTNAME@EMAIL.COM</ns2:EmailAddress>
                    </ns2:CustomerMessageAddress>
                </ns2:ContactForm>
                <ns2:CommunicationDate>2017-03-20</ns2:CommunicationDate>
            </ns2:Location>
    </ns2:SendCustomerMessage_001_Rq>
    </ns0:Request>
    </Requests>

我使用下面的示例XMLMap,并且我为TrackAndTrace错误地放置了结束标记。

<TABLE description="Requests" name="Requests">
        <TABLE-PATH syntax="XPath">/Requests</TABLE-PATH>

        <COLUMN name="RequestSetId" retain="YES">
            <PATH syntax="XPath">/Requests/RequestSetId</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>20</LENGTH>
        </COLUMN>

        <COLUMN name="RequestStream" retain="YES">
            <PATH syntax="XPathENR">/Requests/RequestSetId/RequestStream</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>20</LENGTH>
        </COLUMN>

        <COLUMN name="CorrelationId">
            <PATH syntax="XPathENR">/Requests/{1}Request/{1}TrackAndTrace/{1}CorrelationId</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>40</LENGTH>
        </COLUMN>

        <COLUMN name="EventId">
            <PATH syntax="XPathENR">/Requests/{1}Request/{1}TrackAndTrace/{1}EventId</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>40</LENGTH>
        </COLUMN>

        <COLUMN name="ConversationId">
            <PATH syntax="XPathENR">/Requests/{1}Request/{1}TrackAndTrace/{1}ConversationId</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>40</LENGTH>
        </COLUMN>

        <COLUMN name="CPAId">
            <PATH syntax="XPathENR">/Requests/{1}Request/{1}TrackAndTrace/{1}CPAId</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>8</LENGTH>
        </COLUMN>

<COLUMN name="Purpose">
            <PATH syntax="XPathENR">/Requests/{1}Request/{2}SendCustomerMessage_001_Rq/{2}Location/{2}Purpose</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>10</LENGTH>
        </COLUMN>

        <COLUMN name="OutputProfile">
            <PATH syntax="XPathENR">/Requests/{1}Request/{2}SendCustomerMessage_001_Rq/{2}Location/{2}OutputProfile</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>25</LENGTH>
        </COLUMN>

        <COLUMN name="CommunicationDate">
            <PATH syntax="XPathENR">/Requests/{1}Request/{2}SendCustomerMessage_001_Rq/{2}Location/{2}CommunicationDate</PATH>
            <TYPE>numeric</TYPE>
            <DATATYPE>date</DATATYPE>
            <FORMAT width="10">IS8601DA</FORMAT>
            <INFORMAT width="10">IS8601DA</INFORMAT>
        </COLUMN>

        <COLUMN name="EmailAddress">
            <PATH syntax="XPathENR">/Requests/{1}Request/{2}SendCustomerMessage_001_Rq/{2}Location/{2}ContactForm/{2}CustomerMessageAddress/{2}EmailAddress</PATH>
            <TYPE>character</TYPE>
            <DATATYPE>string</DATATYPE>
            <LENGTH>100</LENGTH>
        </COLUMN>

    </TABLE>
</SXLEMAP>

这是我用来输出xml的代码:

libname XML 'C:\test_XML\XML';

filename out 'C:\test_XML\XML\Requests.xml';

libname out xml92 xmltype=xmlmap xmlmap='C:\test_XML\XMLMAP\req_map.map';

data out.Requests;
    set XML.requests;
run;

Added the table I used to create the xml, please don't mind the RequestId column as I only use it for additional tests 我可以帮我解决这个问题。提前谢谢。

此致 天使

0 个答案:

没有答案