Tag: xml serialization

尽管在UTF-8中编写XML,但仍在XmlElement中转义Unicode字符串

对于给定的XmlElement ,我需要能够将内部文本设置为Unicode字符串的转义版本,尽管文档最终以UTF-8编码。 有没有办法实现这个目标? 这是代码的简单版本: const string text = “ñ”; var document = new XmlDocument {PreserveWhitespace = true}; var root = document.CreateElement(“root”); root.InnerXml = text; document.AppendChild(root); var settings = new XmlWriterSettings {Encoding = Encoding.UTF8, OmitXmlDeclaration = true}; using (var stream = new FileStream(“out.xml”, FileMode.Create)) using (var writer = XmlWriter.Create(stream, settings)) document.WriteTo(writer); 预期: ñ 实际: ñ 直接使用XmlWriter并调用WriteRaw(text)可以正常工作,但我只能访问XmlDocument […]

XmlSerializer。通过NetworkStream反序列化块

我正在尝试通过网络流发送XML可序列化对象。 我已经在UDP广播服务器上使用它,它从本地网络接收UDP消息。 这是服务器端的一个片段: while (mServiceStopFlag == false) { if (mSocket.Available > 0) { IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, DiscoveryPort); byte[] bData; // Receive discovery message bData = mSocket.Receive(ref ipEndPoint); // Handle discovery message HandleDiscoveryMessage(ipEndPoint.Address, bData); … 相反,这是客户端: IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Broadcast, DiscoveryPort); MemoryStream mStream = new MemoryStream(); byte[] bData; // Create broadcast UDP server […]

在没有名称空间的情况下反序列化XML,但在期望名称空间的类中反序列化

重复: 在序列化对象时省略所有xml命名空间? 不一样..我想用另一种方式:反序列化! 我有一个C#类如下: [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “2.0.50727.42”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(Namespace = “http://www.portalfiscal.inf.br/nfe”)] [System.Xml.Serialization.XmlRootAttribute(“NFe”, Namespace = “http://www.portalfiscal.inf.br/nfe”, IsNullable = false)] public partial class TNFe { private TNFeInfNFe infNFeField; private SignatureType signatureField; /// public TNFeInfNFe infNFe { … 我使用此类来按用户请求序列化/反序列化XML文件。 但是我遇到了一个问题:在这个软件的新版本中添加了名称空间定义。 XML仍然是相同的,只添加名称空间定义。 例如,最后一个版本…… … 和新版本…… … 我需要加载带有和不带这些名称空间的XML文件。 我有很多嵌套类,每个嵌套类都有自己的命名空间定义。 我想对两个XML使用相同的类,有和没有名称空间。 我试图创建一个XmlTextReader并覆盖NamespaceURI方法,但我仍然收到一个没有太多信息的exception。 我认为.NET引擎正在尝试针对XML强制类命名空间定义。

XmlSerializer具有新的枚举值

我们在项目中广泛使用xml序列化/反序列化来在多个应用程序之间传递数据。 我们有一个常见的xsd,我们生成c#类,然后使用XmlSerializer从xml转到对象并返回。 我们遇到的问题是,当一个应用程序更新为添加新的枚举值但另一个应用程序尚未更新时。 现在,未更新的应用程序尝试反序列化xml并失败,因为它不知道新的枚举。 如果我们有app1和app2,那么现场工作正常,那么app2将在xsd中使用新的枚举值进行更新,并在该字段中更新到客户端。 突然app1中断,因为它不知道枚举,app1可能甚至不使用该枚举字段,对app1没有影响,但它仍然会中断。 有没有任何已知的方法围绕这个。 基本上我想要做的是定义在找不到枚举时做什么,使用默认值或者如果枚举为nullible类型并将其设置为null。 XmlSerializer和DataContractSerializer抛出exception都是这种情况。 我查看了自定义xml序列化项目YAXLib( http://www.codeproject.com/KB/XML/yaxlib.aspx ),这也引发了exception,但是有源代码并且可以更改。 该项目使用不同的属性属性,需要进行相当多的更改,但可能是可行的。 任何其他建议。

XmlSerializer,base64编码一个String成员

考虑一个简单的案例 public class Test { public String myString; } 有什么办法可以告诉XmlSerializer在序列化时对base64编码myString吗?

当我使用XmlSerialiser对其进行反序列化时,为什么我的DbNull不是单例?

我一直认为DbNull.value是一个单身人士。 因此你可以做这样的事情: VB.NET: If someObject Is DbNull.Value Then … End if C#: If (someObject == DbNull.Value) { … } 但是最近,我使用XmlSerialiser序列化了一个DbNull实例,突然间它不再是单例了。 类型比较操作(如C#(obj是DBNull))工作正常。 代码如下: [Serializable, System.Xml.Serialization.XmlInclude(typeof(DBNull))] public class SerialiseMe { public SerialiseMe() { } public SerialiseMe(object value) { this.ICanBeDbNull = value; } public Object ICanBeDbNull { get; set; } } public void Foo() { var serialiseDbNull = […]

列表的XML序列化

我正在将对象序列化为XML。 我有这样的事情: Class A { public string propertyA1 { get; set; } public List bList { get; set; } } Class B { public string num {get; set;} public string propertyB1 { get; set; } } 当我将它序列化为XML时,我希望它看起来像这样: someVal someVal someVal 但是,它看起来像这样: someVal someVal someVal 知道怎么摆脱输出中的bList吗? 如果需要,我可以提供更多示例代码 谢谢,斯科特

反序列化XML,如何访问属性?

我有一些我正在使用和反序列化的XML。 … … 目前我将它反序列化到这个类: [XmlRoot(“Foo”)] public class Foo { public Foo() { } [XmlArrayItem(“Bar”)] public Bar[] Bars { get; set; } } 这很好,除了我没有捕获@Baz的值。 我想添加Baz作为Foo的属性,但我不确定如何。 我将在我的Baz属性上设置什么属性才能正确反序列化xml? [WhatAttributeGoesHere(“?”)] public int Baz { get; set; }

从.NET中生成的XML中删除命名空间

可能重复: XmlSerializer:删除不必要的xsi和xsd名称空间 我正在使用XMLSerializer生成一些XML,并使用标记属性的类生成XML。 此XML将发送到REST Web服务。 它生成以下XML: API TestPersonDeleteMe Delete me 一切都会好的,除了我正在使用的Web服务不理解架构的东西并抛出500错误。 有没有办法阻止XmlSerializer添加’xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”‘到人物标签?

Xml序列化与“真”和“假”

我遇到了使用布尔值反序列化XML文件的问题。 我正在反序列化的源XML文件是从VB6应用程序创建的,其中所有布尔值都是大写的( True , False )。 当我尝试反序列化XML时,我得到了一个 System.FormatException: The string ‘False’ is not a valid Boolean value. 有没有办法说用属性忽略大小写?