Tag: xml

如何编写单个LINQ to XML查询来遍历所有子元素和子元素的所有属性?

我正在开发asp.net移动应用程序。 我使用XML作为数据库。 我正在查询XML以通过在.net中使用LINQ to XML来访问所需的元素和属性。 我的XML文件中有以下部分。 Production Master Valve Production Wing Valve 在上面的XML文件中,我可以动态访问子元素节点’VALVE’及其属性’NAME’,而无需使用以下代码显式指定属性的名称。 因此,当在子节点“VALVE”中添加任何新属性时,我可以在不修改现有代码的情况下访问它。 对于这样的逻辑,我使用以下代码。 在以下代码中,ValvesProperties是Hashtable,它在“Valves”类中定义。 static int count = 0; List LstValves = new List(); string AttName = null; string AttValue = null; XDocument FieldDef = XDocument.Load(@”F:\Shailesh from user OPC\XML\KK3.xml”); XElement FieldRoot = FieldDef.Element(“KK”); count = FieldRoot.Element(“FIELD-DEFINITION”).Element(“VALVES”).Elements(“VALVE”).Count(); Valves[] Valveobj = new Valves[count]; count = […]

使用xml编辑对象而不创建新实例

我有一个需要成为单身人士的class级。 它还必须能够在xml文件中加载和保存其字段数据。 以下方法将返回一个新实例,它会破坏我的Singleton模式,从而在我的代码中留下潜在的错误。 public Settings Load() { using (Stream stream = File.OpenRead(FileName)) { XmlSerializer serializer = new XmlSerializer(typeof(Settings)); return (Settings)serializer.Deserialize(stream); } } 我可以使用什么方法更新现有实例中的数据,而不是返回一个全新的实例? 我已经研究了一些Linq到Xml,但没有找到任何好的例子。 我是否有必要将所有现场数据保存在字典中?

WPF Datagrid绑定到xml

我想以编程方式将包含从数据库中提取的一些结果的XML文件绑定到我的Datagrid。 我的XML看起来像: Col 1 Col 2 Value field 1 Value field 2 Value field 1 Value field 2 我正在尝试将标题映射到datagrid标题,并将行映射到行…唯一的问题是我有点卡住了,我迷失在程序化属性中,有人可以给我一个提示要照顾什么? 我试过了: myDataGrid.ItemsSource = myXmlDoc 但它并没有真正帮助没有显示嘿嘿,我已经阅读了一些“路径”绑定属性,但我找不到它。

通过LINQ从XML文档填充自定义List子类

我已经想出如何从XML数据填充自定义类,但我遇到了一个问题。 事情与我现有的填充数据的方法完美配合,直到我被抛出一点曲线球。 我发送的新架构与此类似: 1320691307345 0 8.2784 001134 USA 47.000 EA 006817 USA 20.000 EA 非常标准的XML架构,问题是我不知道如何用它填充我的自定义类。 这是我的所作所为: static void Main(string[] args) { var order = ConvertXMLMessage(request); } protected static T ConvertXMLMessage(String xmlData) where T : class, new() { var xml = new XmlDocument(); xml.LoadXml(xmlData); var serializer = new System.Xml.Serialization.XmlSerializer(typeof(T)); using (var xmlReader = new XmlNodeReader(xml.DocumentElement)) { […]

c#serialize嵌套类

我正在尝试序列化一系列虚拟订单,其中每个订单都包含一个产品。 该集合正在序列化,但订单中的示例产品属性正在被遗漏。 订单收集 [XmlRoot(“Orders”)] public class OrderCollection : ICollection { private static List _orders; private List Orders { get { if(_orders == null) { _orders = new List(); } return _orders; } } //All the ICollection functions } 订购 public class Order { [XmlElement(“Id”)] public int Id { get; set; } [XmlElement(“Title”)] public string Title […]

RSA Exception {“Bad Length。\ r \ n”} Noi Matter我的密钥大小是多少

我在行上收到运行时错误{“Bad Length。\ r \ n”}: return rsa.Encrypt(bytes, true); 这是在function: private static byte[] Encrypt(byte[] bytes) { using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()) { string test = Properties.Settings.Default.PublicKeyXml; rsa.FromXmlString(“mfXS3Na0XfkjhpjS3sL5XcC9o+j6KXi1LB9yBc4SsTMo1Yk/pFsXr74gNj4aRxKB45+hZH/lSo933NCDEh25du1iMsaH4TGQNkCqi+HDLQjOrdXMMNmaQrLXGlY7UCCfFUnkEUxX51AlyVLzqLycaAt6zm5ljnDXojMC7JoCrTM=AQAB”); return rsa.Encrypt(bytes, true); } } 我使用的密钥大小为8192: CspParameters cspParams = new CspParameters(); cspParams.KeyContainerName = “XML_ENC_RSA_KEY”; RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(8192, cspParams); string keyXml = rsaKey.ToXmlString(true); XML文件很小。 根据运行时的长度,它只有225个字节: string fileName […]

XmlElement的Xml签名无法validation

我提前为相当冗长的代码块道歉,但这是我可以生成的最小的可编译示例。 我已经省略了原始代码中的所有错误检查。 我正在使用Visual Studio 2012和.NET 4.5,虽然这对4.5来说并不新鲜,但它应该适用于任何版本。 我正在尝试签署XML文档的元素以防止它们被篡改。 我不想保护整个文档,但只保留某些元素。 也许甚至不同的元素与不同的键。 但是,当我签署三个示例元素并尝试validation它们时,第一个元素总是validation,另外两个元素失败。 更糟糕的是,如果我在签名后修改它,第一个甚至会成功。 我已经google了很多,阅读了很多教程,甚至在这里问了一个理论问题 ,但我不知道我做错了什么。 谁能发现我的错误? 注意:我很乐意为解决这个问题的人提供星期五问题的同样赏金。 证书是通过执行: “C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Bin \ makecert”-r -pe -n“CN = XMLDSIG_Test”-b 01/01/2013 -e 01/01/2014 -sky签约 – 我的 Test xml文件是: 签名和validation的代码: namespace SOExample { using System; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography.Xml; using System.Xml; public static […]

如何使用LINQ,C#向元素添加属性?

我有一个XElement对象,它有许多属性,我只想在元素中添加另一个属性。 我该怎么做呢?

如果为null或为空,如何忽略序列化中的可空属性?

我有一个用于Xml序列化的类。 在其中我有一个可以使用XmlAttribute修饰的可空属性: [XmlAttribute(“lastUpdated”)] public DateTime? LastUpdated { get; set; } 如果属性为null或为空,如何忽略序列化的属性? 我已经尝试过以下但是当有值时它不会序列化(总是忽略): [XmlIgnore] public DateTime? LastUpdatedValue { get; set; } [XmlAttribute(“lastUpdated”)] public DateTime LastUpdated { get; set; } public bool ShouldSerializeLastUpdated() { return LastUpdatedValue.HasValue; }

IXmlSerializable和inheritance

假设我有两个类,一个基类和一个派生类。 它们是相当简单的类,主要只是作为数据结构(派生类显然稍微复杂一些)。 public class BaseUserSession { // … Various properties … } public class DerivedUserSession : BaseUserSession { // … Even more properties … } 这些类需要序列化为XML。 现在,这可以通过在类声明之上指定[Serializable]来完成,并且默认的XML序列化程序运行良好。 但实际上,有多个类从基类inheritance。 我的目标是能够使任何派生类的序列化XML可由基类使用。 我尝试了两种方法,目前都没有。 首先,使用本机XML序列化程序和基类中的一些控制属性。 生成的XML看起来像这样: false 0001-01-01T00:00:00 0 带有SSO前缀的标记是从基类inheritance的标记。 但是,当我尝试将其反序列化为BaseUserSession对象时,它会抛出exception: System.InvalidOperationException: was not expected. 我还尝试制作基类IXmlSerializable ,并手动读取和写入所有XML。 但是,派生类无法写出它们的属性,我真的不想为每个类实现IXmlSerializable 。 有更简单的方法吗? = =编辑 我终于实现了一个相当丑陋的方法来实现这一目标。 这两个类inheritance自base,它们都实现了IXmlSerializable 。 每个类(包括基类)使用reflection将其字段值(辛苦地……)写入其自己的XML层次结构中,并将这些值读回。 写入的第一个值始终来自基类。 每个应用程序还包括管理序列化为XML并返回的代码,提供简单的界面。 会话本身现在不再做任何事情,只是接受序列化的XML并将其存储在公共密钥下。 […]