簡體   English   中英

將XML反序列化為在多個架構中定義的對象

[英]Deserializing XML to Objects defined in multiple schemas

我有一個XML文檔,其中包含2種XML模式的類型。 一個(theirs.xsd)是我正在集成(不能編輯)的專有模式。 為此,我定義了自己的類型(mine.xsd),該類型是'any'元素中的元素,是專有類型。

我使用Visual Studio的xsd.exe從架構生成C#類。 但是,專有類型中的“ any”元素將作為XmlElement []生成,因此我的類型不會反序列化。

因此,我想我可以采用以下兩種方法之一:生成將反序列化我的類型的類,而不是將其保留為XmlElement;或者采用XmlElements分別對它們進行反序列化。 要反序列化,我需要一個XmlReader,所以我需要從XmlElement轉到XmlReader,但我不確定該怎么做。 謝謝。

示例:文件:themes.xsd

<xs:element name="ProprietaryContainer">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

檔案:mine.xsd

<xs:element name="MyPairType">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="key" type="xs:string"/>
      <xs:element name="value" type="xs:long"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

文件:message.xml

<their:ProprietaryContainer>
  <their:name>pairContainer</their:name>
  <mine:MyPairType>
    <mine:key>abc</mine:key>
    <mine:value>long</mine:value>
  </mine:MyPairType>
</their:ProprietaryContainer>

從問題:

要反序列化,我需要一個XmlReader,所以我需要從XmlElement轉到XmlReader,但我不確定該怎么做

using(XmlReader reader = new XmlNodeReader(element)) {
    //... use reader
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM