Tag: xml

如何反序列化子项直接位于根中的对象列表

请考虑以下XML: 我已经设置了以下代码: private static void Main(string[] args) { StreamReader result = File.OpenText(@”test.xml”); var xmlTextReader = new XmlTextReader(result.BaseStream, XmlNodeType.Document, null); XDocument load = XDocument.Load(xmlTextReader); var xmlSerializer = new XmlSerializer(typeof (TreeList)); var foo = (TreeList) xmlSerializer.Deserialize(load.CreateReader()); } 这些是我的实体: [Serializable] [XmlRoot(“treelink”)] public class TreeLink { [XmlAttribute(“id”)] public string Id { get; set; } } [Serializable] [XmlRoot(“treelist”)] public class […]

使用抽象复杂类型为模式生成类

我正在使用一些定义抽象复杂类型的模式,例如。 然后,此类型由模式中的另一个复杂类型引用: 当我运行“xsd.exe / d / l:CS MySchema.xsd”时,我收到此错误: 错误:处理MySchema.xsd’时出错。 – 为DataSet”生成代码时出错。 – 无法将输入xml文件内容转换为DataSet。 DataSet无法为节点Data实例化抽象ComplexType。 – DataSet无法为节点Data实例化抽象ComplexType。 它似乎不是无效的架构。 还有其他人遇到过这个问题吗? 谢谢 缺口

如何按C#中的节点属性对XML文件进行排序

不要求任何人为我编写这个解决方案 – 只需寻找最佳方法的指导。 我正在使用C#代码在VS2015中处理.aspx文件。 我发现无数线程解释了如何在XML文件中对节点进行排序。 但是,根据常见的子节点属性,我还没有找到关于如何使用相同结构对多个XML文件进行排序的任何线程。 我的情况:我有一个名为0001.xml到6400.xml的数百个XML文件的目录。 每个XML文件都具有相同的结构。 我想根据子节点的属性对文件(而不是节点)进行排序。 每个XML文件都有一个“项目”父节点,并且具有子节点“年”,“语言”和“作者”等。 例如: 2011 John F. Smith 如果我不是按照0001到6400的顺序列出文件,而是根据项目/作者节点的@sortby属性按字母顺序列出它们,我该怎么做? 我的一个想法是创建一个临时XML文件,收集每个XML文件所需的信息。 然后,我可以对临时XML文件进行排序,然后循环遍历节点以按正确的顺序显示文件。 这样的东西…… XDocument tempXML = new XDocument(); // add parent node of string[] items = Directory.GetFiles(directory) foreach (string item in items) { // add child node of with attributes “filename”, “year”, “language”, and “author” } // then sort […]

访问c#web应用程序中的内容文件

我现在已经有3天这个问题了。 我有一个标记为Content和Always Copy的xml文件。 该文件已复制到: C:\Users\avi\Documents\Visual Studio 2010\Projects\ExpressBroker\ExpressBroker\bin\XMLMetadata\Actions.1.xml 访问文件时: //like that: XDocument actions = XDocument.Load(“bin\\XMLMetadata\\Actions.1.xml”); //or like that: XDocument actions = XDocument.Load(“XMLMetadata\\Actions.1.xml”); //or like that: XDocument actions = XDocument.Load(“Actions.1.xml”); 我得到以下exception: Exception Details: System.IO.DirectoryNotFoundException: Could not find a part of the path ‘C:\Program Files\IIS Express\bin\XMLMetadata\Actions.1.xml’. 为什么在IIS文件夹中搜索过? 我如何访问该文件? 我正在使用IIs Express和VWD2010

序列化使用内部修饰符声明的类的List ?

我正在尝试将XML序列化添加到C#中相当简单的类结构中。 本质上,有一个根类的实例(称为AClass),它包含一些其他类的几个实例的List(称之为AnotherClass): [XmlRoot(“RootNode”)] public class AClass { [XmlElement(“ListNode”)] internal List otherObjects { get; set; } } public class AnotherClass { [XmlAttribute(“Name”)] internal string name { get; set; } } 在序列化时,我希望将这两个类序列化在一起 – 也就是说,如果我序列化了AClass,它的AnotherClass列表也会被序列化(请参阅此问题 )。 我有这个主要工作,但问题是在序列化期间,XmlSerializer似乎只想处理类的public属性 – 如果列表被声明为internal它根本不会序列化AnotherClass。 我尝试使程序集的内部对序列化程序可见: [assembly: System.Runtime.CompilerServices.InternalsVisibleTo(“System.Xml”)] 这似乎没有做任何事情。 有没有办法让XmlSerializer递归序列化内部声明的对象列表?

以UTF8而不是UTF16输出DataTable XML

我有一个DataTable,我正在使用.WriteXML(..)创建一个XML文件,虽然我有一个问题,它导出UTF-16编码,似乎没有明显的方法来改变它。 我知道.NET在字符串内部使用UTF-16,这是正确的吗? 然后我运行DataTable.WriteXML()通过XSLT生成的XML,该XSLT在输出声明中包含以下内容: 但是,转换的输出仍然是UTF16,而我尝试输入此XML文件的系统不支持UTF16。 有没有办法强制输出到UTF-8?

仅在C#中validationXML语法

有很多教程可以教授如何针对模式validationXML。 但现在我只想validationXML语法,而不是模式。 意思我只想检查XML是否格式正确,是否有关闭或打开标记未正确完成。 无论如何,我可以在.Net中做到这一点吗?

XML反序列化和XPath?

我有这样的Xml …Snip…. MR John Wayne …..Snip… 其中Citizen Name是Party Node中的复杂类型。 (这是从我正在创建适配器的第三方集成中收到的xml) 我并不感兴趣,因为我的课程中有一个子类型,我试图反序列化,我宁愿拥有。 public class Party { public string FirstName { get; set; } public string LastName {get;set;} } 因此,不是将我的类定义作为XML表示的具体定义,而是可以使用类似XPath的东西来修饰属性,例如。 [XmlElement(“\CitizenName\CitizenNameForeName”)] public string FirstName {get;set;} 要从xml中挑选信息到一个类中,它包含我感兴趣的数据? 从第三方收到的xml非常冗长,我只对特定方面感兴趣。 一种选择是创建一个XMLDocument并使用XPath和转换方法手动映射到我的类,但我想如果有中间解决方案我会问?

将对象保存到没有序列化属性的文件的最简单方法是什么?

我在c#中有不同类型的对象,我想保存到文件(XML是首选)但我不能使用序列化,因为该类不是由我编写的,而是来自DLL。 什么是最好的解决方案?

将xml反序列化为类,遇到列表的问题

我有以下XML 我正在尝试编写可以将其反序列化的类,这就是我所拥有的: [XmlRoot(“map”)] public class MyMap { [XmlAttribute(“version”)] public decimal Version { get; set; } [XmlElement(“properties”)] public List Properties { get; set; } } public class MyProperty { [XmlAttribute(“name”)] public string Name { get; set; } [XmlAttribute(“value”)] public string Value { get; set; } } 问题是我似乎无法读取属性列表,我只得到一个条目,它在Name和Value中都为null。 我需要设置一些神奇的属性来使其工作吗?