Tag: xml serialization

反序列化XML数组,其中Root是数组,元素不遵循约定

我得到的XML是由外部源提供的,所以我没有能力轻松地重新格式化它。 我想在我的实体上使用xml属性,而不必编写知道如何格式化XML和实体的linq查询。 这是一个例子: 2013-2 Spring 2013 2013-3 Summer 2013 Jun&Jul 我知道XMLSerializer需要ArrayOfTerm而不是TERMS,但是我可以调整我的实体以使用不同的元素名称和xml属性,例如: public class TermData { [XmlArray(“TERMS”)] [XmlArrayItem(“TERM”)] public List terms; } public class Term { [XmlElement(“ID”)] public string id; [XmlElement(“DESC”)] public string desc; } 我正在反序列化数据,如下所示: TermData data; XmlSerializer serializer = new XmlSerializer(typeof(TermData)); using (StringReader reader = new StringReader(xml)) { data = (TermData)serializer.Deserialize(reader); } return View(data.terms); […]

xml序列化 – 删除命名空间

我正在使用c#序列化一个对象。 我得到的结果如下所示 <Users 但我希望得到这种格式的结果。 这是我的代码 public class Users { [XmlArray(“Users”)] public List ListData { get; set; } public string GetXML() { System.IO.MemoryStream ms = new System.IO.MemoryStream(); XmlSerializer sr = new XmlSerializer(typeof(Users)); sr.Serialize(ms, this); ms.Position = 0; return System.Text.Encoding.UTF8.GetString(ms.ToArray()); } } public class User { [XmlAttribute(“Id”)] public Int64 UserId { get; set; } [XmlAttribute(“CreateDate”)] public string […]

Xml序列化 – 渲染空元素

我正在使用XmlSerializer并在类中具有以下属性 public string Data { get; set; } 我需要输出完全如此 我将如何实现这一目标?

AvalonDock DockingManager不加载布局

为了保存和加载我的布局,我遵循了这里的说明,但它对我不起作用。 我在MainWindow有这个XAML : 这些是按钮点击的事件处理程序: private void SaveButton_Click(object sender, RoutedEventArgs e) { XmlLayoutSerializer layoutSerializer = new XmlLayoutSerializer(myDM); using (var writer = new StreamWriter(“test”)) { layoutSerializer.Serialize(writer); } } private void LoadButton_Click(object sender, RoutedEventArgs e) { XmlLayoutSerializer layoutSerializer = new XmlLayoutSerializer(myDM); using (var reader = new StreamReader(“test”)) { layoutSerializer.Deserialize(reader); } } 显示窗口后,我点击保存“测试”文件的内容是: 问题就出现了 – 在我单击加载按钮后,文档和可锚定消失,我在窗口中看到的只有2个按钮和一个空矩形,我的布局应该是。 此时,当我单击“保存”按钮时,这是写入“test”文件的内容: 我正在使用AvalonDock 2.0.1746.0。 […]

我应该何时在.NET框架中使用XML序列化与二进制序列化?

我很困惑 – 我应该何时使用XML序列化,何时应该在.NET框架中使用二进制序列化?

如何让XmlSerializer将bool编码为是/否?

我将xml发送到另一个程序,它希望布尔标志为“是”或“否”,而不是“真”或“假”。 我有一个类定义如下: [XmlRoot()] public class Foo { public bool Bar { get; set; } } 当我序列化它时,我的输出如下所示: true 但我希望它是这样的: yes 我可以在序列化时这样做吗? 我宁愿不必诉诸于此: [XmlRoot()] public class Foo { [XmlIgnore()] public bool Bar { get; set; } [XmlElement(“Bar”)] public string BarXml { get { return (Bar) ? “yes” : “no”; } } } 请注意,我还希望能够再次反序列化此数据。

如何将xml作为UTF-8而不是UTF-16返回

我正在使用序列化的例程。 它有效,但下载到浏览器后,我看到一个空白页面。 我可以在文本编辑器中查看页面源或打开下载,我看到xml,但它是UTF-16,我认为这是为什么浏览器页面显示空白? 如何修改序列化程序例程以返回UTF-8而不是UTF-16? XML源返回: January February March April May June July August September October November December 调用序列化程序的示例: DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo(); var months = dateTimeFormatInfo.MonthNames.ToList(); string SelectionId = “1234567890”; return new XmlResult<List>(SelectionId) { Data = months }; 串行器: public class XmlResult : ActionResult { private string filename = DateTime.Now.ToString(“ddmmyyyyhhss”); public T Data { […]

C# – 派生类的XML序列化

我正在尝试序列化多个元素的列表(供应商,客户,产品等),所有元素都来自同一个类(MasterElement) public class XMLFile { [XmlArray(“MasterFiles”)] public List MasterFiles; … } [XmlInclude(typeof(Supplier))] [XmlInclude(typeof(Customer))] public abstract class MasterElement { public MasterElement() { } } [XmlType(TypeName = “Supplier”)] public class Supplier: MasterElement { public string SupplierID; public string AccountID; } [XmlType(TypeName = “Customer”)] public class Customer: MasterElement { public string CustomerID; public string AccountID; public string CustomerTaxID; […]

使用XML序列化来序列化没有父节点的集合

假设我有一堂课; public class Car { public List Passengers {get; set;} } 我想将其序列化为XML,以便乘客是Car的子节点,并且没有介入的Passengers节点。 换句话说,我希望输出看起来像这样; … … 而不是这样,这是默认布局; … … 有一个属性我需要添加到Car.Passengers来实现这一点,我不记得哪个。

替换XML序列化

我有使用XmlSerializer代码来序列化/反序列化数据结构以保持持久性。 我在StackOverflow上的几个地方读过和听说XmlSerializer是以下一个或多个: 坏 支持/实施不力 可能不会支持未来 我的问题是双重的; 以上是否属实,若有,有哪些替代方案? 就我的目的而言,XML工作得非常好,我希望保持这种不变,但其他一切都是可以改变的。 编辑:如果你想建议XML的其他东西,我会接受它,但它确实需要人类可读。