C# 使用C中的XmlSerializer将复杂元素内容反序列化为字符串#
有没有办法用XmlSerializer将包含简单文本或子元素的元素反序列化为字符串 Xml示例:C# 使用C中的XmlSerializer将复杂元素内容反序列化为字符串#,c#,xmlserializer,xml-deserialization,C#,Xmlserializer,Xml Deserialization,有没有办法用XmlSerializer将包含简单文本或子元素的元素反序列化为字符串 Xml示例: <Attribute> <AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">thisistext</AttributeValue> <AttributeValue> <e:Authori
<Attribute>
<AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">thisistext</AttributeValue>
<AttributeValue>
<e:Authorities xmlns:e="urn:dummy">
<e:Authority>ORG_CHIEF</esia-encoder:Authority>
</e:Authorities>
</AttributeValue>
</Attribute>
反序列化第一个AttributeValue成功,但下一个失败。难怪,beacause ReadElementString方法需要简单或空的内容。我正在寻找一种方法来告诉序列化程序“将此元素的内容放入字符串,不管它包含什么”。实际上,XML中的第二个值是:
<e:Authorities xmlns:e="urn:dummy">
<e:Authority>ORG_CHIEF</esia-encoder:Authority>
</e:Authorities>
实际上,XML中的第二个值是:
<e:Authorities xmlns:e="urn:dummy">
<e:Authority>ORG_CHIEF</esia-encoder:Authority>
</e:Authorities>
如果您能够在XSD中定义它,那么可以使用或XSD.exe为XSD创建一个类,以便将其反序列化为 这个怎么样
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Attribute">
<xs:complexType>
<xs:sequence>
<xs:element name="AttributeValue" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<xs:element name="AuthoritiesString" type="xs:string"/>
<xs:element name="AuthoritiesElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Authority"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如果您能够在XSD中定义它,您可以使用或XSD.exe创建一个类,以便XSD反序列化为 这个怎么样
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Attribute">
<xs:complexType>
<xs:sequence>
<xs:element name="AttributeValue" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<xs:element name="AuthoritiesString" type="xs:string"/>
<xs:element name="AuthoritiesElement">
<xs:complexType>
<xs:sequence>
<xs:element name="Authority"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我想将第二个值(元素权限的xml标记)作为字符串获取。@artplastika那么您的类不是xml文档的表示形式。这将需要您实现IXmlSerializable
接口来自定义(反)序列化类。默认情况下,您对IXmlSerializable的建议是指,我正在寻找基于元数据的解决方案。但既然没有其他办法,我接受这一回答我想将第二个值(元素权限的xml标记)作为字符串获取。@artplastika那么您的类不是xml文档的表示形式。这将需要您实现IXmlSerializable
接口来自定义(反)序列化类。默认情况下,您对IXmlSerializable的建议是指,我正在寻找基于元数据的解决方案。但既然没有其他办法,我接受这一回答