Похоже, ты забыл очистить печенье. Попробуйте почистить его следующим способом. Windows.UI.Xaml.Controls.WebView.ClearTemporaryWebDataAsync (); Также проверьте ответ stackoverflow Очистить все куки из WebView
Вот рабочая версия. Я изменил маркировки XmlElementAttribute на XmlElement, потому что в xml StockNumber, Сделайте, и Образцовые значения являются элементами, не атрибутами. Также я удалил читателя. ReadToEnd (); (что функция чтения целый поток и возвраты строка, таким образом, Deserialze () функция не могла использовать читателя больше... положение, была в конце потока). Я также взял несколько свобод с именованием:).
Вот классы:
[Serializable()]
public class Car
{
[System.Xml.Serialization.XmlElement("StockNumber")]
public string StockNumber { get; set; }
[System.Xml.Serialization.XmlElement("Make")]
public string Make { get; set; }
[System.Xml.Serialization.XmlElement("Model")]
public string Model { get; set; }
}
[Serializable()]
[System.Xml.Serialization.XmlRoot("CarCollection")]
public class CarCollection
{
[XmlArray("Cars")]
[XmlArrayItem("Car", typeof(Car))]
public Car[] Car { get; set; }
}
Десериализовывать функция:
CarCollection cars = null;
string path = "cars.xml";
XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
StreamReader reader = new StreamReader(path);
cars = (CarCollection)serializer.Deserialize(reader);
reader.Close();
И немного настроенный xml (я должен был добавить новый элемент для обертывания < Cars>... сеть требовательна в отношении десериализации массивов):
<?xml version="1.0" encoding="utf-8"?>
<CarCollection>
<Cars>
<Car>
<StockNumber>1020</StockNumber>
<Make>Nissan</Make>
<Model>Sentra</Model>
</Car>
<Car>
<StockNumber>1010</StockNumber>
<Make>Toyota</Make>
<Model>Corolla</Model>
</Car>
<Car>
<StockNumber>1111</StockNumber>
<Make>Honda</Make>
<Model>Accord</Model>
</Car>
</Cars>
</CarCollection>
Посмотрите, помогает ли это:
[Serializable()]
[System.Xml.Serialization.XmlRootAttribute("Cars", Namespace = "", IsNullable = false)]
public class Cars
{
[XmlArrayItem(typeof(Car))]
public Car[] Car { get; set; }
}
.
[Serializable()]
public class Car
{
[System.Xml.Serialization.XmlElement()]
public string StockNumber{ get; set; }
[System.Xml.Serialization.XmlElement()]
public string Make{ get; set; }
[System.Xml.Serialization.XmlElement()]
public string Model{ get; set; }
}
И сбой, которые используют программу xsd.exe, которая идет с Visual Studio, чтобы создать документ схемы на основе этого xml файл, и затем использовать его снова для создания класса на основе документа схемы.
git add
, как много команд Unix, печати ничто на успех. Проверьте git status
, чтобы видеть, был ли файл добавлен.
– Brian Campbell
25.03.2020, 02:52
Следующий отрывок должен добиться цели (и можно проигнорировать большинство атрибутов сериализации):
public class Car
{
public string StockNumber { get; set; }
public string Make { get; set; }
public string Model { get; set; }
}
[XmlRootAttribute("Cars")]
public class CarCollection
{
[XmlElement("Car")]
public Car[] Cars { get; set; }
}
...
using (TextReader reader = new StreamReader(path))
{
XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
return (CarCollection) serializer.Deserialize(reader);
}
Как насчет Вас просто сохраняют xml в файл и используют xsd для генерации классов C#?
xsd foo.xml
xsd foo.xsd /classes
И вуаля - и файл кода C#, который должен быть в состоянии считать данные через XmlSerializer
:
XmlSerializer ser = new XmlSerializer(typeof(Cars));
Cars cars;
using (XmlReader reader = XmlReader.Create(path))
{
cars = (Cars) ser.Deserialize(reader);
}
(включают сгенерированный foo.cs в проект)
[Serializable]
избыточно при использованииXmlSerializer
;XmlSerializer
просто никогда проверки на это. Аналогично, большая часть[Xml...]
атрибуты избыточны, поскольку это просто подражает поведению по умолчанию; т.е. по умолчанию свойство, названноеStockNumber
, хранится как элемент, названный<StockNumber>
- никакая потребность в атрибутах для этого. – Marc Gravell♦ 26.01.2020, 15:40