Я пытаюсь десериализовать такой XML-файл (на самом деле это POM maven, но это сейчас не важно ...):
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
</project>
У меня есть класс POM, который я определил вручную:
[XmlRoot(Namespace= "http://maven.apache.org/POM/4.0.0")]
public class POM
{
[XmlElement("modelVersion")]
public string ModelVersion{ get; set; }
}
... и мой десериализованный код:
FileStream fileStream = File.Open("pom.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
var codec = new XmlSerializer(typeof(POM));
var pom = (POM) codec.Deserialize(fileStream);
Когда я запускаю это, я получаю InvalidOperationException: 'project xmlns = "http://maven.apache.org/POM/4.0.0"' не ожидалось.
Как заставить десериализатор справиться с дополнительным атрибутом xmlns и расположением xsi: schemalocation?
Когда я их удаляю, код запускается без ошибок.
Спасибо, Майкл