Я использовал этот Xml Deserialization with complex elements in c# в качестве ссылки. Я заметил, что существует много потоков об Deserializing xml, но они не упоминают, когда у тега есть несколько значений внутри него.Deserialize XML с несколькими значениями
Я пытаюсь десериализовать свой xml для lvl3 в массив объектов.
Я получаю сообщение об ошибке «ошибка в документе xml document (1, 2)».
У меня есть XML-строка, я дистанционно по запросу HTTP GET, отформатированный как это:
<xml ...>
<lvl1 id="xxx" name="yyy">
<lvl2 id="aaa" name="bbb">
<lvl3 id="mmm" name="nnn" val1="ppp" val2="qqq">
<lvl4a x="000" y="000" z="000" />
<lvl4b a="000" b="000" c="000" />
<lvl4c l="000" w="000" h="000" />
...
</lvl3>
</lvl2>
</lvl1>
</xml>
У меня есть следующий код, который продолжает бросать исключение:
"An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll"
исключение брошено этой линии:
temp = (Test)new XmlSerializer(typeof(Test)).Deserialize(rdr);
Но я не уверен, как это сделать, чтобы отладить его, чтобы найти ошибку. Вот полный код:
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(xmlstring);
XmlNodeList list = xmldoc.GetElementsByTagName("lvl2");
for (int i = 0; i < list.Count; i++)
{
Test temp = new Test();
using (XmlReader rdr = XmlReader.Create(new StringReader(list[i].InnerXml)))
{
temp = (Test)new XmlSerializer(typeof(Test)).Deserialize(rdr); // exception thrown here
}
Console.WriteLine(temp.id);
Console.WriteLine(temp.overall.x);
}
[XmlRoot("lvl3")]
public class Test{
[XmlAttribute("id")]
public string id { get; set; }
[XmlAttribute("name")]
public string name { get; set; }
[XmlElement(ElementName = "lvl4a")]
public Overall overall { get;set; }
}
public class Overall
{
[XmlAttribute("x")]
public string x { get; set; }
[XmlAttribute("y")]
public string y { get;set; }
[XmlAttribute("z")]
public string z { get;set; }
}
Вы отлаживали и проверяли, где происходит исключение, и если существует внутреннее исключение? –
Я сделал, не было внутреннего исключения – Kmat
Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –