Позволяет ли SOAP Service создавать XML-файл в моем собственном - PullRequest
0 голосов
/ 26 сентября 2019

Я новичок в сервисах SOAP.Я создал свои первые SOAP-сервисы, и теперь Team Lead дал мне задание как-то (я не знаю, как) сделать так, чтобы пользователь мог создать XML-файл в качестве шаблона и сохранить данные из базы данных в этот XML-файл.Я пытаюсь найти что-то в Google, но не могу.

<DataTable xmlns="http://tempuri.org/">
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" id="NewDataSet">
    <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="AKONTAS" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="AKONTAS" msprop:BaseTable.0="AKONTAS">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="A_KONTO" msprop:BaseColumn="A_KONTO" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="NAZIV" msprop:BaseColumn="NAZIV" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="SIFRA_RAD" msprop:BaseColumn="SIFRA_RAD" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
                <xs:element name="OPSTINA" msprop:BaseColumn="OPSTINA" msprop:OraDbType="104" type="xs:string" minOccurs="0" />
                <xs:element name="MB" msprop:BaseColumn="MB" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="ULICA" msprop:BaseColumn="ULICA" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="BROJ" msprop:BaseColumn="BROJ" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="PBROJ" msprop:BaseColumn="PBROJ" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="MJESTO" msprop:BaseColumn="MJESTO" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="PORESKI" msprop:BaseColumn="PORESKI" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="TRANSAKCIJ" msprop:BaseColumn="TRANSAKCIJ" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="INTERNET" msprop:BaseColumn="INTERNET" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="EMAIL" msprop:BaseColumn="EMAIL" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="KONTAKT" msprop:BaseColumn="KONTAKT" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="TELEFON" msprop:BaseColumn="TELEFON" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="FAKS" msprop:BaseColumn="FAKS" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="DAT_UNOS" msprop:BaseColumn="DAT_UNOS" msprop:OraDbType="106" type="xs:dateTime" minOccurs="0" />
                <xs:element name="PDVMB" msprop:BaseColumn="PDVMB" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="VRSTA_KLIJENTA" msprop:BaseColumn="VRSTA_KLIJENTA" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
                <xs:element name="DRZAVA" msprop:BaseColumn="DRZAVA" msprop:OraDbType="126" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <NewDataSet xmlns="">
      <AKONTAS diffgr:id="AKONTAS1" msdata:rowOrder="0">
        <A_KONTO>515534</A_KONTO>
        <NAZIV>Hanny Moon</NAZIV>
        <SIFRA_RAD>12366</SIFRA_RAD>
        <MB>1234567891011</MB>
        <DAT_UNOS>2005-12-07T00:00:00+01:00</DAT_UNOS>
      </AKONTAS>
    </NewDataSet>
  </diffgr:diffgram>
</DataTable>

1 Ответ

1 голос
/ 26 сентября 2019

В общем, вы можете определить SOAP-сообщение со всеми вашими атрибутами.Тем не менее, я думаю, что довольно часто определяют только один параметр SOAP, и этот параметр снова содержит целый XML-файл.Этот встроенный XML-файл может быть любым, что вам нравится.Вот пример такого SOAP-запроса.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://..." xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:Runnings>
      <param0 xsi:type="xsd:string"><![CDATA[
<DSS>
    <runner id="1">
        <run id="1"><track>1</track><period>9.475</period></run>
        <run id="2"><track>1</track><period>8.3</period></run>
    </runner>
    <runner id="2">
        <run id="1"><track>2</track><period>15.475</period></run>
        <run id="2"><track>2</track><period>12.3</period></run>
    </runner>
</DSS>
]]>
      </param0>
    </ns1:Runnings>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Встроенный XML-запрос должен быть заключен в <![CDATA[ ... ]]> или вам нужно экранировать <>&" (вы можете использовать HTF.ESCAPE_SC ), т.е. ваш SOAP-запрос может выглядеть следующим образом:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://..." xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:Runnings>
      <param0 xsi:type="xsd:string">&lt;DSS&gt;
    &lt;runner id="1"&gt;
        &lt;run id="1"&gt;&lt;track&gt;1&lt;/track&gt;&lt;period&gt;9.475&lt;/period&gt;&lt;/run&gt;
        &lt;run id="2"&gt;&lt;track&gt;1&lt;/track&gt;&lt;period&gt;8.3&lt;/period&gt;&lt;/run&gt;
    &lt;/runner&gt;
    &lt;runner id="2"&gt;
        &lt;run id="1"&gt;&lt;track&gt;2&lt;/track&gt;&lt;period&gt;15.475&lt;/period&gt;&lt;/run&gt;
        &lt;run id="2"&gt;&lt;track&gt;2&lt;/track&gt;&lt;period&gt;12.3&lt;/period&gt;&lt;/run&gt;
    &lt;/runner&gt;
&lt;/DSS&gt;</param0>
    </ns1:Runnings>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Или вы можете заключить встроенный XML в строку BASE64 (см. Кодирование и декодирование Base64 в Oracle ) с помощью UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.BASE64_ENCODE(UTL_RAW.CAST_TO_RAW( ... ))), было бы так:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://..." xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
  <SOAP-ENV:Body>
    <ns1:Runnings>
      <param0 xsi:type="xsd:string">PERTUz4KCTxydW5uZXIgaWQ9IjEiPgoJCTxydW4gaWQ9IjEiPjx0cmFjaz4xPC90
cmFjaz48cGVyaW9kPjkuNDc1PC9wZXJpb2Q+PC9ydW4+CgkJPHJ1biBpZD0iMiI+
PHRyYWNrPjE8L3RyYWNrPjxwZXJpb2Q+OC4zPC9wZXJpb2Q+PC9ydW4+Cgk8L3J1
bm5lcj4KCTxydW5uZXIgaWQ9IjIiPgoJCTxydW4gaWQ9IjEiPjx0cmFjaz4yPC90
cmFjaz48cGVyaW9kPjE1LjQ3NTwvcGVyaW9kPjwvcnVuPgoJCTxydW4gaWQ9IjIi
Pjx0cmFjaz4yPC90cmFjaz48cGVyaW9kPjEyLjM8L3BlcmlvZD48L3J1bj4KCTwv
cnVubmVyPgo8L0RTUz4=</param0>
    </ns1:Runnings>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...