2010-07-04 6 views
1

WCF에서 내 머리를 긁는 중 ... <DataFields>의 자식이 아무 것도 될 수없는 XML 메시지가 있습니다. ...WCF 데이터 계약에서 xs : any를 처리하는 방법

<Test1Root> 
    <CaseNo></CaseNo> 
    <Activity></Activity> 
    <DataFields> 
    <AccountRef></AccountRef> 
    <PropRef></PropRef> 
    <User></User> 
    </DataFields> 
</Test1Root> 

나는

<xs:element name="DataFields"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip" /> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

... <DataFields><xs:any> 사용하여 BizTalk에서이 문제를 처리했습니다 그러나 나는 WCF [DataContract]에서이 문제를 처리하는 방법을보기 위해 사투를 벌인거야 .. .

I의 클래스를 생성 할 svcutil.exe에 및 xsd.exe 모두 사용하려고

, 그들은 모두 기본 소자들 (CaseNo 등, 작업 등)를 제공 BU t은 어느 쪽도 XS 처리 할 것 같다 : DataFields의 ...

  • 는 svcutil는
  • XSD가 클래스로 가지고있는 XMLELEMENT로 DataFields을 가지고,하지만 형 XMLELEMENT의 가진 모든 재산 []

하위 요소를보다 잘 처리 할 수 ​​있습니까? 그것이 무엇이든 할 수 있기 때문에

답변

2

글쎄, xs:any

.... 최고의 있도록 할 수있는 .NET 도구는 당신에게 객체의 배열을 제공하고, 무엇이든 할 수있다, 당신이 그것에 대해 할 수있는 많은 진짜가 아니다 , 권리? 그것은 무엇이든 될 수 있습니다 ... 그래서 당신은 아무것도 될 수있는 유형을 사용해야합니다.

XML 스키마에 실제로 xs:any이 필요하고 예를 들어. 좀 더 구체적 인 xs:element 세트 (아마도 서로 상속), 나는 당신이 어떻게 더 나은 지원을받을 수 있는지 보지 못합니다 ...

+0

응답을 주셔서 감사합니다. 나는 그것을 기대하고 있지만, 희미한 방법으로 이걸 처리 할 수있는 정말 희망이 있습니다. – SteveC

0

이것을 할 수 있습니다. 나는 여러 번 그것을 한 번 해왔다. WCF 서비스를 많이 해본 적은 없지만 같은 방식으로 작동한다고 생각합니다. 스키마의 <xs:any>은 코드에서 XmlElement로 변환됩니다. 귀하의 경우에는 XmlElement의 배열.

+1

''이 위에서 처리 된 것 같습니다. 그것은 읽어야했습니다 : 스키마에서 ''코드에서 XmlElement로 변환 가져옵니다. – nick

+0

죄송합니다, 죄송합니다 ... 귀하의 요점을 알 수 없습니까? XSD.EXE가 XmlElement []를 생성한다고 언급 했으므로 어떤 내용을 말하고 있습니까? – SteveC

0

"any"요소를 사용하여 응답 속성을 정의하는 WSDL로 이전 웹 서비스에 몇 가지 문제가있었습니다.

사용자 지정 메시지 포맷터의 문제가 해결되었습니다. 솔루션에 대해 더 자세히 설명하는 게시물을 작성하여 http://devdump.wordpress.com/2012/10/26/working-with-legacy-web-services-and-wcf/, 다른 사람들과 시간을 절약하기를 바랍니다.

+3

링크의 내용을 요약하여 링크가 작동 할 때 중단되지 않는 정식 답이되게하는 것이 좋습니다. – mnel

+1

@mnel 왜 불평하기보다는 대답을 직접 편집하지 않습니까? –