Tag: xmlserializer

使用XmlSerializer序列化多个类型的数组

我正在尝试使用XMLSerializer生成如下所示的XML,其中的内容是一个数组,但元素可以是不同类型(在本例中为 , 和 )。 这可能吗? … Unit – A-1212 this is the name8 FOOBAR8 XML121 XML Customer 111 San Jose Kevin 123456789 ….

如何使用XmlSerializer序列化Object类型的属性

我有一个属性: public object Tag 但它可以包含有限数量的类型,遗憾的是没有基类型(对象类型除外)。 但是当我使用此属性序列化对象时,它不会被序列化。 有没有办法用可能的类型指示XmlSerializer?

C#Xml序列化列表后代与Xml属性

早上好, 我有一个从List下降并拥有公共属性的集合。 Xml序列化程序没有取得我的优势。 列表项序列化很好。 我尝试过XmlAttribute属性无济于事。 你们有解决方案吗? public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { var people = new PersonCollection { new Person { FirstName=”Sue”, Age=17 }, new Person { FirstName=”Joe”, Age=21 } }; people.FavoritePerson = “Sue”; var x = new XmlSerializer(people.GetType()); var b = […]

无法使用XML反序列化器将XML反序列化为列表

这是从我之前的问题继续使用XML序列化序列化接口列表 public class MeterWalkOrder { public MeterWalkOrder() { Meters = new List(); } public String Name { get; set; } [XmlIgnore] public List Meters { get; set; } [XmlArrayItem(ElementName = “Meter”)] [XmlArray(ElementName = “Meters”)] public List SerializableMeters { get { return Meters.Cast().ToList(); } set { Meters = new List(value); } } } public interface IMeter […]

使用XmlSerializer反序列化List 导致额外的项目

我注意到XmlSerializer和generics列表(特别是List )的奇怪行为。 我想知道是否有人以前见过这个或知道发生了什么。 看起来好像序列化工作正常,但反序列化想要在列表中添加额外的项目。 下面的代码演示了这个问题。 可序列化类: public class ListTest { public int[] Array { get; set; } public List List { get; set; } public ListTest() { Array = new[] {1, 2, 3, 4}; List = new List(Array); } } 测试代码: ListTest listTest = new ListTest(); Debug.WriteLine(“Initial Array: {0}”, (object)String.Join(“, “, listTest.Array)); Debug.WriteLine(“Initial List: {0}”, […]

序列化为XML时重命名类

我正在尝试序列化下面显示的Outer类,并从序列化的XML创建一个XElement 。 它有一个属于Inner的属性。 我想更改Inner (到Inner_X )和Outer (到Outer_X )的名称。 class Program { static void Main(string[] args) { using (MemoryStream memoryStream = new MemoryStream()) { using (TextWriter streamWriter = new StreamWriter(memoryStream)) { var xmlSerializer = new XmlSerializer(typeof(Outer)); xmlSerializer.Serialize(streamWriter, new Outer()); XElement result = XElement.Parse(Encoding.ASCII.GetString(memoryStream.ToArray())); } } } } [XmlType(“Outer_X”)] public class Outer { public Outer() { this.InnerItem […]

如何使用XMLSerializer添加没有前缀的默认命名空间

我正在尝试使用XmlSerializer生成一个包含默认命名空间而没有前缀的XML文档,例如 使用以下代码…… string xmlizedString = null; MemoryStream memoryStream = new MemoryStream(); XmlSerializer xs = new XmlSerializer(typeof(ExportMyRecord)); XmlSerializerNamespaces xmlnsEmpty = new XmlSerializerNamespaces(); xmlnsEmpty.Add(string.Empty, string.Empty); XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8); xs.Serialize(xmlTextWriter, myRecord, xmlnsEmpty); memoryStream = (MemoryStream)xmlTextWriter.BaseStream; xmlizedString = this.UTF8ByteArrayToString(memoryStream.ToArray()); 和class级结构…… [Serializable] [XmlRoot(“MyRecord”)] public class ExportMyRecord { [XmlAttribute(“ID”)] public int ID { get; set; } 现在,我尝试了各种选择…… XmlSerializer […]

使用XmlSerializer创建具有属性和值但没有子元素的元素

希望这应该是那里的人(可能是一个骗子)的简单答案,但我似乎无法弄明白。 我需要输出一个如下所示的元素: 37 我知道如何得到这个: 37 包含Quantity类 public int qty; [XmlAttribute] public string foo; [XmlAttribute] public string bar; 但是当然,无论我将数量插入到哪个变量中,它都会变成自己的子元素。 另一方面,如果我将Quantity作为父元素中的变量,那么我可以设置值并获取 37 但后来我不知道如何获得属性。 如果没有一个简单的方法来使用XmlSerializer,我会非常惊讶,但我还不知道。 有任何想法吗?

使用CData部分包装属性 – XML序列化C#

我需要以这样的方式序列化我的对象,使我想要的属性绕过CData部分。 我希望我能做到这样的事情: public class Order { [JsonProperty] public int OrderId { get; set; } [JsonProperty] public string Name { get; set; } [JsonProperty] public int Type { get; set; } [JsonProperty] public decimal Amount { get; set; } [JsonProperty] public DateTime Date { get; set; } [DataMember] [JsonProperty] **[WrapCData]** public List ListB { get; set; […]

使用StringReader与XmlNodeReader反序列化对象属性

为什么XmlSerializer在使用XmlNodeReader反序列化空类型元素而不是像使用StringReader (或XmlTextReader )时那样的空字符串时,用XmlNode数组填充我的对象属性? 以下代码示例中的第二个断言失败: var doc = new XmlDocument(); doc.Load(new StringReader(@” “)); var ser = new XmlSerializer(typeof (Test)); var reader1 = new StringReader(doc.InnerXml); var obj1 = (Test) ser.Deserialize(reader1); Debug.Assert(obj1.Value is string); var reader2 = new XmlNodeReader(doc.FirstChild); var obj2 = (Test) ser.Deserialize(reader2); Debug.Assert(obj2.Value is string); public class Test { public object Value { get; set; } […]