Das XML-Element namens 'name' aus dem Namespace verweist auf verschiedene Typen

8

Bitte helfen Sie. Beim Deserialisieren der Daten vom Server ist ein Fehler aufgetreten,

  

Das oberste XML-Element 'Name' aus dem Namespace '' verweist auf verschiedene Typen   Object1.LocalStrings und System.String. Verwenden Sie XML-Attribute zum Angeben   ein anderer XML-Name oder Namespace für das Element oder die Typen.

Ich habe eine Klasse ObjectType, die die Eigenschaften Name und List<SupportedIp> enthält. Die SupportedIp-Klasse enthält auch die Eigenschaft Name. Bitte beachten Sie meinen Code unten:

%Vor%

Wenn die Anwendung den XmlSerializer -Teil erreicht, wird der Fehler angezeigt. Ich habe etwas verwandten Beitrag gesehen, aber es gibt keine konkrete Antwort.

    
xscape 10.05.2012, 10:37
quelle

2 Antworten

10

Von dem, was Sie geschrieben haben, denke ich, dass das Problem darin besteht, dass Sie den gleichen Elementnamen (namespace="", name="Name") mit zwei verschiedenen Inhaltstypen haben (String-Typ und Typ von Localstrings), was in XML illegal ist. Dies bedeutet, dass jeder XML-Parser den von Ihnen gedruckten schwerwiegenden Fehler auslösen sollte. Die Lösung besteht darin, entweder den Namen des Elements zu ändern oder denselben Namen zu verwenden, sie jedoch mit anderen Namespaces zu verknüpfen. Zum Beispiel statt:

%Vor%

Sie könnten setzen:

%Vor%

Das Kernproblem scheint zu sein, dass XMLSerializer die XSD-Schema-Validierung verwendet. Das bedeutet, dass jedem von Ihnen definierten XmlElementAttribute ein Typ angehängt ist (lesen Sie mehr hier ). Eine der XSD-Einschränkungen ist die Constraint-Bedingung "Element Declarations Consistent", die besagt, dass zwei beliebige Elemente mit demselben Namen (und demselben Namespace) den gleichen Typ haben müssen (lesen Sie mehr von hier ).

Ich hoffe, es hilft.

    
Mircea 15.05.2012, 14:36
quelle
0

Das Argument, das Sie im Methodenheader deklarieren, muss für alle Webmethoden im Namespace eindeutig sein. Das Argument ist das Top-Level-XML-Tag der Soap: body. Viel Glück.

    
Ravi Fernando 23.05.2014 19:54
quelle