SOAP 요청의 CDATA 섹션에 XML을 포함 할 때 구문 분석 오류

레 벤트 디 빌리 오 글루

다른 XML을 포함하는 CDATA 섹션이있는 SOAP 메시지를 보내려고하는데 구문 분석 오류가 발생합니다. XML 데이터를 CDATA 섹션에 포함해야합니다.

아래에 내 코드가 있습니다.

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.apache.axis.AxisFault;

import com.levo.rec.*;

public class REC
{
    public static void main(String args[])
    {
        String mesaj = 
        "<![CDATA[                                                                         " + 
        "   <REC_DATA xmlns=\"http://www.levo.com/REC\">                                   " + 
        "   <RECheader RECID=\"\" REClabel=\"\"/>                                          " + 
        "       <RECattributes>                                                            " + 
        "           <attribute name=\"USERNAME\" value=\"" + userName + "\"/>              " + 
        "           <attribute name=\"DATA\" value=\"" + userData + "\"/>                  " + 
        "       </RECattributes>                                                           " + 
        "   </REC_DATA>                                                                    " + 
        "]]>                                                                               " ;

        try
        {
            y = new RECPortStub();
            y.sendMsg(mesaj);

        } catch (AxisFault e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (RemoteException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

"RECPortStub"클래스의 코드는 다음과 같습니다.


public class RECPortStub extends org.apache.axis.client.Stub implements
        com.levo.rec.RECPort
{
    private java.util.Vector cachedSerClasses = new java.util.Vector();
    private java.util.Vector cachedSerQNames = new java.util.Vector();
    private java.util.Vector cachedSerFactories = new java.util.Vector();
    private java.util.Vector cachedDeserFactories = new java.util.Vector();

    static org.apache.axis.description.OperationDesc[] _operations;

    static
    {
        _operations = new org.apache.axis.description.OperationDesc[1];
        _initOperationDesc1();
    }

    private static void _initOperationDesc1()
    {
        org.apache.axis.description.OperationDesc oper;
        org.apache.axis.description.ParameterDesc param;
        oper = new org.apache.axis.description.OperationDesc();
        oper.setName("sendMsg");
        param = new org.apache.axis.description.ParameterDesc(
                new javax.xml.namespace.QName("", "inputXMLMessage"),
                org.apache.axis.description.ParameterDesc.IN,
                new javax.xml.namespace.QName(
                        "http://www.w3.org/2001/XMLSchema", "string"),
                java.lang.String.class, false, false);
        oper.addParameter(param);
        oper.setReturnType(new javax.xml.namespace.QName(
                "http://www.w3.org/2001/XMLSchema", "string"));
        oper.setReturnClass(java.lang.String.class);
        oper.setReturnQName(new javax.xml.namespace.QName("",
                "outputXMLMessage"));
        oper.setStyle(org.apache.axis.constants.Style.RPC);
        oper.setUse(org.apache.axis.constants.Use.ENCODED);
        _operations[0] = oper;

    }

    public RECPortStub() throws org.apache.axis.AxisFault
    {
        this(null);
    }

    public RECPortStub(java.net.URL endpointURL,
            javax.xml.rpc.Service service) throws org.apache.axis.AxisFault
    {
        this(service);
        super.cachedEndpoint = endpointURL;
    }

    public RECPortStub(javax.xml.rpc.Service service)
            throws org.apache.axis.AxisFault
    {
        if (service == null)
        {
            super.service = new org.apache.axis.client.Service();
        } else
        {
            super.service = service;
        }
        ((org.apache.axis.client.Service) super.service)
                .setTypeMappingVersion("1.2");
    }

    protected org.apache.axis.client.Call createCall()
            throws java.rmi.RemoteException
    {
        try
        {
            org.apache.axis.client.Call _call = super._createCall();
            if (super.maintainSessionSet)
            {
                _call.setMaintainSession(super.maintainSession);
            }
            if (super.cachedUsername != null)
            {
                _call.setUsername(super.cachedUsername);
            }
            if (super.cachedPassword != null)
            {
                _call.setPassword(super.cachedPassword);
            }
            if (super.cachedEndpoint != null)
            {
                _call.setTargetEndpointAddress(super.cachedEndpoint);
            }
            if (super.cachedTimeout != null)
            {
                _call.setTimeout(super.cachedTimeout);
            }
            if (super.cachedPortName != null)
            {
                _call.setPortName(super.cachedPortName);
            }
            java.util.Enumeration keys = super.cachedProperties.keys();
            while (keys.hasMoreElements())
            {
                java.lang.String key = (java.lang.String) keys.nextElement();
                _call.setProperty(key, super.cachedProperties.get(key));
            }
            return _call;
        } catch (java.lang.Throwable _t)
        {
            throw new org.apache.axis.AxisFault(
                    "Failure trying to get the Call object", _t);
        }
    }

    public java.lang.String sendMsg(java.lang.String inputXMLMessage)
            throws java.rmi.RemoteException
    {
        if (super.cachedEndpoint == null)
        {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        _call.setOperation(_operations[0]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("");
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName(
                "http://hedehodo.com/RECadapter",
                "sendMsg"));

        setRequestHeaders(_call);
        setAttachments(_call);
        try
        {
            java.lang.Object _resp = _call
                    .invoke(new java.lang.Object[] { inputXMLMessage });

            if (_resp instanceof java.rmi.RemoteException)
            {
                throw (java.rmi.RemoteException) _resp;
            } else
            {
                extractAttachments(_call);
                try
                {
                    return (java.lang.String) _resp;
                } catch (java.lang.Exception _exception)
                {
                    return (java.lang.String) org.apache.axis.utils.JavaUtils
                            .convert(_resp, java.lang.String.class);
                }
            }
        } catch (org.apache.axis.AxisFault axisFaultException)
        {
            throw axisFaultException;
        }
    }

}
레 벤트 디 빌리 오 글루

참고 : 내 질문의 xml은 형식이 좋지 않지만 Axis 가 '<', '>'문자 (이스케이프 코드)를 변경하여 '<'및 '>'와 같은 문자를 이스케이프 하는 경우 테스트하는 데 사용합니다 . XML의 CDATA 섹션 .

두 가지 해결책이 있습니다.

  1. (쉬운 해결책) SOAP 처리를 위해 Axis 대신 SAAJ사용하십시오 . SAAJ 는 CDATA 섹션 내의 문자를 이스케이프하지 않습니다.

  2. XML의 CDATA 섹션 내에서 문자가 이스케이프 문자 대신있는 그대로 전달되도록 Axis 메서드를 재정의합니다. CDATA 섹션 외부에서는 XML 문서로 인해보다 작거나 큰 문자를 이스케이프해야하지만 CDATA 섹션 내부에서는 그대로 전달해야합니다 (내가 아는 한).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XMLTABLE을 사용하여 SOAP의 CDATA 섹션 구문 분석

분류에서Dev

Swift 4에서 Alamofire로 요청할 때 서버의 JSON 구문 분석 오류

분류에서Dev

63 열의 3 행 오류 : HTML을 XML로 구문 분석 할 때 공용 식별자 뒤에 공백이 필요함

분류에서Dev

구문 오류? XML 값을 구문 분석 할 때

분류에서Dev

XML 구문 분석을 시도 할 때 요소에 대해 null 가져 오기

분류에서Dev

어떻게 해제의 XInclude에 XML을 구문 분석 할 때?

분류에서Dev

Java의 URL에서 XML을 구문 분석 할 때 MalformedByteSequenceException 발생

분류에서Dev

DB에서 행을 가져 오려고 할 때 PHP 구문 분석 오류-Magento

분류에서Dev

오류 구문 분석 트리거를 수정하는 방법 : Gitlab CI에 Firebase 함수를 배포 할 때 '../../ 모듈을 찾을 수 없습니다.

분류에서Dev

insertAll을 사용할 때 Appscript의 큰 쿼리 구문 분석 오류

분류에서Dev

PUT 요청에 대한 매개 변수를 구문 분석 할 때 오류가 발생했습니다.

분류에서Dev

태그 내에서 CDATA 만 가져 오는 XML 구문 분석

분류에서Dev

yacc에서 할당 문을 구문 분석 할 때 구문 오류가 발생합니다.

분류에서Dev

Java SAX로 Excel xml 파일을 구문 분석 할 때 오류 발생

분류에서Dev

node-mysql을 사용할 때 SQL 구문 분석 오류

분류에서Dev

Eval ()을 시도 할 때 구문 분석기 오류

분류에서Dev

Eval ()을 시도 할 때 구문 분석기 오류

분류에서Dev

객체 구문 분석을 시도 할 때 jquery 오류

분류에서Dev

처음 두 값을 구문 분석 할 때 Libconfig 오류

분류에서Dev

서버에 업로드 할 때 PHP 구문 분석 오류

분류에서Dev

nlme 패키지의 R gls 명령을 실행할 때이 오류가 발생하여 구문 분석에 오류가 있습니다.

분류에서Dev

XML 파일의 구문 분석 섹션

분류에서Dev

C ++의 함수에서 문자열을 반환 할 때 분할 오류

분류에서Dev

#Access에서 문자열을 구문 분석 할 때`Switch`에서 발생하는 오류

분류에서Dev

Haskell GHCI 컴파일러 : 간단한 함수를 정의하고 선언 할 때 repl의 구문 분석 오류

분류에서Dev

BugZilla Perl 종속성을 설치 한 후 gitweb을 구성하려고 할 때 XML 구문 분석 오류

분류에서Dev

외부 URL에서 스크립트를 구문 분석 할 때 간단한 XML 오류

분류에서Dev

'... & body ='를 포함 할 때 어떻게 html을 XML로 구문 분석 할 수 있습니까?

분류에서Dev

문자열을 DateTime으로 구문 분석 할 때 오류 발생

Related 관련 기사

  1. 1

    XMLTABLE을 사용하여 SOAP의 CDATA 섹션 구문 분석

  2. 2

    Swift 4에서 Alamofire로 요청할 때 서버의 JSON 구문 분석 오류

  3. 3

    63 열의 3 행 오류 : HTML을 XML로 구문 분석 할 때 공용 식별자 뒤에 공백이 필요함

  4. 4

    구문 오류? XML 값을 구문 분석 할 때

  5. 5

    XML 구문 분석을 시도 할 때 요소에 대해 null 가져 오기

  6. 6

    어떻게 해제의 XInclude에 XML을 구문 분석 할 때?

  7. 7

    Java의 URL에서 XML을 구문 분석 할 때 MalformedByteSequenceException 발생

  8. 8

    DB에서 행을 가져 오려고 할 때 PHP 구문 분석 오류-Magento

  9. 9

    오류 구문 분석 트리거를 수정하는 방법 : Gitlab CI에 Firebase 함수를 배포 할 때 '../../ 모듈을 찾을 수 없습니다.

  10. 10

    insertAll을 사용할 때 Appscript의 큰 쿼리 구문 분석 오류

  11. 11

    PUT 요청에 대한 매개 변수를 구문 분석 할 때 오류가 발생했습니다.

  12. 12

    태그 내에서 CDATA 만 가져 오는 XML 구문 분석

  13. 13

    yacc에서 할당 문을 구문 분석 할 때 구문 오류가 발생합니다.

  14. 14

    Java SAX로 Excel xml 파일을 구문 분석 할 때 오류 발생

  15. 15

    node-mysql을 사용할 때 SQL 구문 분석 오류

  16. 16

    Eval ()을 시도 할 때 구문 분석기 오류

  17. 17

    Eval ()을 시도 할 때 구문 분석기 오류

  18. 18

    객체 구문 분석을 시도 할 때 jquery 오류

  19. 19

    처음 두 값을 구문 분석 할 때 Libconfig 오류

  20. 20

    서버에 업로드 할 때 PHP 구문 분석 오류

  21. 21

    nlme 패키지의 R gls 명령을 실행할 때이 오류가 발생하여 구문 분석에 오류가 있습니다.

  22. 22

    XML 파일의 구문 분석 섹션

  23. 23

    C ++의 함수에서 문자열을 반환 할 때 분할 오류

  24. 24

    #Access에서 문자열을 구문 분석 할 때`Switch`에서 발생하는 오류

  25. 25

    Haskell GHCI 컴파일러 : 간단한 함수를 정의하고 선언 할 때 repl의 구문 분석 오류

  26. 26

    BugZilla Perl 종속성을 설치 한 후 gitweb을 구성하려고 할 때 XML 구문 분석 오류

  27. 27

    외부 URL에서 스크립트를 구문 분석 할 때 간단한 XML 오류

  28. 28

    '... & body ='를 포함 할 때 어떻게 html을 XML로 구문 분석 할 수 있습니까?

  29. 29

    문자열을 DateTime으로 구문 분석 할 때 오류 발생

뜨겁다태그

보관