1
은 내가 Xsd2Code 사용하는 C#을 객체를 생성 한 타사에서 스키마가 (xsd.exe 같은 다른 옵션을 XMLSPY 등 중 하나가 추락 또는 일을 자신의 라이브러리를 필요한 코드의 40메가바이트 분출)XmlSerializer가 여러 네임 스페이스의 특성을 deserialize 할 수 있습니까?
어쨌든을,
[XmlType(Namespace="something")]
[XmlRoot("someType", Namespace="something", IsNullable=false)]
public partial class SomeType {
public string Element1 { get; set; }
[XmlElement(Namespace="somethinelse")]
public string Element2 { get; set; }
}
예 XML 스키마 말했다 사용 :
<xsd:schema xmlns:ns1="something" xmlns:ns2="somethinelse" targetNamespace="something">
<xsd:complexType name="someType">
<xsd:sequence>
<xsd:element ref="element1" />
<xsd:element ref="ns2:element2" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
생성 된 래퍼 클래스는 다음과 같습니다 : 여기 스키마에서 문제 요소의 예
,536,<someType>
<element1>SomeValue</element1>
<ns2:element2>SomeValue2</element2>
</someType>
(오류는 필자가 입력 한 것입니다. 스키마가 유효하고 변경 불가능)
이제 문제가 발생했습니다. 이렇게하면 XML을 deserialize하려고 할 때 :
XmlSerializer ser = new XmlSerializer(typeof(SomeType));
XmlReader reader = XmlReader.Create(new StringReader(xmlString))
SomeType obj = (SomeType)ser.Deserialize(reader)
생성 된 개체가 올바르게 serialize되고 필요한 요소에 "ns2"가 추가됩니다. 그러나 deserialize 할 때 element1이 설정되고 element2는 null로 남습니다.