다음과 같은 개체가 있습니다.
public class MyClass {
public string AValue {get;set;}
public XmlElement AdditionalConfig {get;set;}
}
다음과 같은 XML 블록에서 생성하고 있습니다.
<MyClass>
<AValue>Something</AValue>
<AdditionalConfig>
<NewNode Att="Value" />
</AdditionalConfig>
</MyClass>
XmlSerializer를 사용하여 XML을 de-serialize하면 AdditionalConfig XmlElement 속성은 NewNode입니다. 이제 거기에 두 번째 요소를 추가하면 :
<MyClass>
<AValue>Something</AValue>
<AdditionalConfig>
<NewNode Att="Value" />
<AnotherNewNode />
</AdditionalConfig>
</MyClass>
deserialization이 작동하지 않습니다. 인식 할 수없는 요소 'AnotherNewNode'에 대해 불평합니다.
MyClass.AdditionalConfig를 배열로 만들려고 시도했지만 운이 없었습니다. 노드의 모든 내용을 XmlElement 개체로 가져 오려면 어떻게해야합니까?
늘 그렇듯이 감사합니다
왜 작동하지 않는지 모르겠습니다. 그러나 필요한 기능을 얻으려면 AdditionalConfig
다음과 같이 추가 요소에 대한 컨테이너 클래스를 대신 도입 할 수 있습니다 .
public class AdditionalConfig
{
[XmlAnyAttribute]
public XmlAttribute[] attributes;
[XmlAnyElement]
public XmlElement[] elements;
}
public class MyClass
{
public string AValue { get; set; }
public AdditionalConfig AdditionalConfig { get; set; }
}
[XmlAnyElement]
XmlElement
또는 XElement
유형 의 배열에 적용될 때 XML에서 알 수없는 요소를 모두 캡처하여 역 직렬화합니다. 마찬가지로 [XmlAnyAttribute]
필요한 경우 <AdditionalConfig>
요소 의 알 수없는 속성을 XmlAttribute
배열 로 캡처합니다 .
프로토 타입 바이올린 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다