2012-10-04 4 views
0

SAP 설치에서 호출되고 음수의 직렬화와 관련된 문제가 발생하는 WCF 웹 서비스를 개발하고 있습니다. 그들은 "-123.45"가 아닌 "123.45-"와 같은 값을 전달하기 때문에 비 직렬화가 중단됩니다. 나는 모든 것을 XML의 문자열로 정의한 다음 꼬리표를 수동으로 찾는 것으로 해결할 수 있다고 생각합니다.XML의 숫자에 유효한 형식은 무엇입니까

제 질문은 유효한 XML 숫자 표현입니다. 나는 this page을 발견했는데, 기호 (있는 경우)가 번호 앞에 와야한다는 것을 나타내는 것으로 보인다. 하루가 끝나면 보내는 내용을 처리하는 데 필요한 모든 것을 추가해야합니다. 실제로 이것이 사양 관점에서 잘못되었음을 알고 자하는 것이 자존심이라고 생각합니다.)

+2

XML 자체는 숫자 값에 대한 특정 표현을 정의하지 않습니다. XML 스키마는 가능한 유효한 XML 문서 세트를 설명하기 위해 추가로 필요합니다 (XML 스키마는 SAP 설치에서 사용되거나 사용되지 않을 수도 있습니다 - 아닐까요?). –

+0

자신 만의 독창적 인 방법으로 재미있는 표준 표현을 사용하는 이유는 무엇입니까? 다음은 float에 대한 XML 스키마입니다. http://www.w3.org/TR/xmlschema-2/#float. 분명히 다른 사람들이 해결 방법을 찾아야하기 때문에 통합 파트너에게이 사실을 물어볼 것입니다. –

+0

@GregHewgill - 알겠습니다. 나는 XML Schema가 ** 유효한 XML의 ** 정의라고 가정했다. –

답변

1

엄격한 의미의 숫자 표현이 입니다. SOAP 엔드 포인트에 대해 말하면 서비스 WSDL 파일을 찾아 요청 및 응답에서 예상되는 스키마에 대한 링크를 따라갈 수 있습니다. WCF는 보통 xs : int, xs : decimal, xs : double 등을 사용합니다. . 숫자 형식을 나타냅니다.

다음에 수행 할 작업은 클라이언트가 "유효한"번호를 전송하는 데 영향을 줄 수있는 정도에 따라 다릅니다. 당신이 할 수없고, 기존 요청을 지원해야한다면, 당신의 시나리오에서 "유효"하게되고, 어떻게 처리해야 할 것인가. 어쩌면 이상적인 세계는 아니지만 때때로 interop이 그러한 종류의 문제를 일으 킵니다.

+0

감사합니다, Carlos. 나는 그만큼 의심했다. 이 시점에서 필자는 본질적으로 "효과가 있다고"말했습니다. 난 그냥 한 필드에 대한 해결 방법을 (문자열을 호출하고 수동으로 구문 분석) 했어. 이제 다른 20 개의 숫자 필드에 추가하십시오. –

+1

Saxon은 XPath 표현식 (saxon : preprocess)을 사용하여 유효성 검사 전에 입력 필드를 변환 할 수있는 XSD 확장을 제공합니다. 합리적인 해결책이 되기에는 너무 비표준 일 것입니다. 그러나 유효성을 검사하기 전에 데이터를 필터링합니다 (예 : SAX 필터를 사용하는 것이 효과적 일 수 있습니다. –

관련 문제