때때로받는 XML의 네임 스페이스를 변경하는 API를 다루고 있습니다. XML 구조는 동일하게 유지됩니다. 강력한 형식의 모델로 XML을 deserialize해야합니다.네임 스페이스를 모르는 경우 어떻게 XML을 deserialize합니까?
XML의 네임 스페이스에 관계없이 역 직렬화를 수행하려면 어떻게해야합니까?
나는이 같은 모델을 사용 하였다
[Serializable, XmlRoot(ElementName = "TestModel", Namespace = "http://schemas.datacontract.org/UnknownNamespace1")]
public class TestModel
{
public TestModel()
{
TestElements = new List<TestModelChildren>();
}
[XmlElement("TestModelChildren")]
public List<TestModelChildren> TestElements { get; set; }
}
나는 다음과 같은 코드로 해당 모델에 약간의 XML을 역 직렬화 할 :
public TestModel DeserializeIt(XDocument xDoc)
{
TestModel result;
var serializer = new XmlSerializer(typeof(TestModel));
using(var sr = new StringReader(xDoc.ToString()))
{
result = (TestModel)serializer.Deserialize(sr);
}
return result;
}
내 문제를 그 모든 너무 자주, 네임 스페이스 XML에서 나는 변화를 받고있다. 다음과 같이 XML을 시작할 수 있습니다.
<TestModel xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/UnknownNamespace2">
<TestModelChildren>
...
</TestModelChildren>
</TestModel>
이 네임 스페이스 변경이 발생할 때마다 코드를 다시 컴파일하지 않으려 고합니다. 어떻게 처리할까요?