지난 한 주 동안 .NET 코어 netcoreapp1.0
(net451
)으로 응용 프로그램을 업그레이드했습니다. 프로세스의 대부분은 매우 잘 진행되었으며 모든 것이 내가보고있는 마이너스 한 가지 문제로 넘어갔습니다..NET 코어에서 알 수없는 특성의 XML serialization
API 끝점 (전적으로 제어 할 수 없음)에서 XML을 serialize하려면 System.Xml
및 System.Xml.Serialization
을 사용하고있었습니다. 잘 작동했지만 XML 관련 문제로 인해 항상 UnknownAttribute
으로 돌아간 하나의 속성이있었습니다. 나는이 같은 UknownAttribute
이벤트에 배선하여 처리 :
XmlReader reader = XmlReader.Create(stream);
var serializer = new XmlSerializer(typeof(PersonDetails));
var personDetails = (PersonDetails)serializer.Deserialize(reader);
serializer.UnknownAttribute += new XmlAttributeEventHandler((object sender, XmlAttributeEventArgs e) => {
unknownAttr.Add(e.Attr.Name, e.Attr.Value);
});
// Handle the missing map value if it exists.
string addressValue;
if(unknownAttr.TryGetValue("Address_x0_", out addressValue))
{
personDetails.Address = addressValue;
}
을 .NET 코어로 업그레이드으로, 내가 지금 System.Xml.XmlSerializer 4.0.11 라이브러리를 사용합니다. 이제 UnknownAttribute 이벤트가 더 이상 XmlSerializer
의 일부가 아닌 것으로 보입니다. 나는 알 수없는 속성을 처리 할 다른 방법을 찾을 수 없었고 올바른 방향으로 포인터를 알게되었습니다.
문서 [여기] (https://docs.microsoft.com/en-us/dotnet/core/api/system.xml.serialization.xmlanyattribute 속성)에서 dotnetcore가 여전히 ['XmlAnyAttributeAttribute']를 지원합니다 https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlanyattributeattribute.aspx). '[XmlAnyAttribute]'속성을'PersonDetails' 클래스에'C#에서 속성 목록이있는 요소를 역 직렬화하는 법 '(https://stackoverflow.com/questions/32884364)의 행을 따라 추가 할 수 있습니다. 내부의 알려지지 않은 속성 때문입니다. – dbc
감사합니다. @dbc. 나는 그것을 보았지만,이 예제를 시도 할 때,'XmlAttribute []'는 타입이 아닙니다. 도서관을 놓치고 있는지, 아니면 내 인생에서 무언가가 심각하게 파손되었는지는 모르겠다. 나는'XmlAttributeAttribute','XmlAttributes','XmlAttributeOverrides'를 가지고 있습니다. 'XmlAttribute'와는 다른 것입니다. 어떤 생각? 편집 : 또한 그것을 여기에 참조하십시오 : https://docs.microsoft.com/en-us/dotnet/core/api/system.xml#System_Xml_XmlAttribute, 그것을 시도 할 때 컴파일되지 않습니다. – JasCav
필요할 수 있습니다 : https://www.nuget.org/packages/System.Xml.XmlDocument/ – dbc