Это работает: (каждый счет-фактура имеет много LineItems)Попадая Общий список из C# объектов XML работает нормально, за исключением того, когда я положил, что в списке объектов
public class Invoice
{
public int InvoiceId { get; set; }
public List<LineItem> LineItems { get; set; }
}
public class LineItem
{
public int LineItemId { get; set; }
}
string strInvoice = "<Invoice> <InvoiceId>12345</InvoiceId> <LineItems> <LineItem> <LineItemId>123</LineItemId> </LineItem> <LineItem> <LineItemId>456</LineItemId> </LineItem> </LineItems></Invoice>";
object result = new System.Xml.Serialization.XmlSerializer(typeof(Invoice)).Deserialize(new System.IO.StringReader(strInvoice));
Объект получает десериализован отлично.
Но теперь, я пытаюсь сделать список счетов-фактур (теперь я прилагаю текущую строку XML в <Invoices></Invoices>
):
public class InvoiceList
{
public List<Invoice> Invoices { get; set; }
}
string strInvoices = "<Invoices><Invoice> <InvoiceId>12345</InvoiceId> <LineItems> <LineItem> <LineItemId>123</LineItemId> </LineItem> <LineItem> <LineItemId>456</LineItemId> </LineItem> </LineItems></Invoice></Invoices>";
object results = new System.Xml.Serialization.XmlSerializer(typeof(Invoice)).Deserialize(new System.IO.StringReader(strInvoices));
в результате:
There is an error in XML document (1, 2).
{"<Invoices xmlns=''> was not expected."}
Как я могу структурировать свой класс или SQL для десериализации списка счетов-фактур?
Попытка это - который берется из ответа на твиттере вопрос, который был отмечен как дубликат, я не получаю результатов:
string strInvoices = "<Invoices><Invoice> <InvoiceId>12345</InvoiceId> <LineItems> <LineItem> <LineItemId>123</LineItemId> </LineItem> <LineItem> <LineItemId>456</LineItemId> </LineItem> </LineItems></Invoice></Invoices>";
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "Invoices";
xRoot.IsNullable = true;
object results = new System.Xml.Serialization.XmlSerializer(typeof(Invoice),xRoot).Deserialize(new System.IO.StringReader(strInvoices));
Если я делаю это, я получаю ту же ошибку:
object results = new System.Xml.Serialization.XmlSerializer(typeof(Invoice),xRoot).Deserialize(new System.IO.StringReader(strInvoices));
Если я сделаю это, как комментарий предложил, ничего не возвращается:
object results = new System.Xml.Serialization.XmlSerializer(typeof(InvoiceList),xRoot).Deserialize(new System.IO.StringReader(strInvoices));
Таким образом, разные к примеру, отмеченному как дубликат . Я предпринял много усилий, чтобы дублировать эту ошибку и сделать ее максимально универсальной и легко читаемой и скопированной и вставляемой в Visual Studio.
Возможный дубликат [{"<пользователь xmlns = ''> не ожидался.} Дезабилизация Twitter XML] (http://stackoverflow.com/questions/1556874/user-xmlns-was-not-expected-deserializing- twitter-xml) – captainsac