Я получу эти два xmls
<XML>
<Name>Test</Name>
</XML>
или
<XML1 Name1="Test">
</XML1>
Я хотел бы знать, есть ли способ обработки значения для элемента «Имя» иАтрибут "Name1", использующий только одну переменную.
Я пробовал это, но когда я выполнил функцию сериализатора (XmlSerializer xmlSerializer = new XmlSerializer(typeof(XML));
), во время выполнения происходит сбой со следующим сообщением:
"Тамбыла ошибка, отражающая тип 'XMLSerializerTest.XML'. "
введите описание изображения здесь
Использование XmlChoiceIdentifier
не сработало, но я 'Я новичок в обработке XML, поэтому может быть что-то не так. В конце я хочу получить один формат и иметь возможность перейти на другой формат. Я написал простой пример здесь, но я хочу распространить решение по всему проекту.
Это класс, который я создал:
namespace XMLSerializerTest
{
[XmlType("XML", Namespace = "")]
[XmlRoot("XML1")] //This doesn't handle multiple root names
public class XML
{
[XmlElement("Name")]
[XmlAttribute("Name1")]
public string Name { get; set; }
}
}
Это то, что я делаю от Main допопробуйте и проверьте это:
//This is the line giving the error I mentioned
XmlSerializer xmlSerializer = new XmlSerializer(typeof(XML));
StreamReader sr = new StreamReader("[FileLocation.xml]");
//Do something to change to a diff "format"
XML xmltest = (XML)xmlSerializer.Deserialize(sr);
StreamWriter sw = new StreamWriter("Test1.xml");
sw.Close();