Как обработать xs:any в Контракте Данных WCF

царапание моей головы на WCF... У меня есть сообщения XML где дети <DataFields> могло быть что-либо, например.

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

Я обработал это в BizTalk с помощью <xs:any> для <DataFields> ...

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

Но я изо всех сил пытаюсь видеть, как обработать это в WCF [DataContract] ...

Я пытался использовать и svcutil.exe и xsd.exe для создания классов, и они оба дают основные элементы (CaseNo, Действие, и т.д.), но ни один, кажется, не обрабатывает xs:any DataFields...

  • svcutil имеет DataFields как XmlElement
  • xsd имеет его как класс, но с Любым свойством типа XmlElement []

Действительно ли возможно получить лучшую обработку дочерних элементов?

1
задан SteveC 9 June 2011 в 08:27
поделиться

1 ответ

Ну, xs: any может быть чем угодно, поэтому лучшее, что могут сделать инструменты .NET, - это предоставить вам массив объектов ....

Поскольку он может быть что угодно, вы действительно мало что можете с этим поделать, верно? Это может быть что угодно ... поэтому вам нужно использовать тип, который может быть любым.

Если вам действительно нужен этот xs: any в вашей XML-схеме, и его нельзя заменить, например, набор более конкретных xs: element (возможно, унаследованных друг от друга), я не понимаю, как вы могли бы получить лучшую поддержку ...

2
ответ дан 2 September 2019 в 23:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: