Tag: xml

覆盖XML序列化方法

我在尝试自定义DateTime变量在对象中序列化的方式时遇到了麻烦。 我希望它输出为2011-09-26T13:00:00Z但是当我覆盖GetObjectData()函数时,我认为是这样做的方法,根本不输出任何XML数据。 [DataContract(Namespace = “”)] [XmlRootAttribute(Namespace = “http://www.w3.org/2005/Atom”, ElementName = “feed”)] public class GCal { [XmlNamespaceDeclarations] public XmlSerializerNamespaces _xsns = new XmlSerializerNamespaces(); [XmlElement(ElementName = “entry”)] public Collection items = new Collection(); /*some other elements*/ } public class gCalEvent { [XmlElement(Namespace = “http://schemas.google.com/g/2005”)] public gdEvent when = new gdEvent(); /*some other elements*/ } public class gdEvent […]

c#XML Schemavalidation

我有一个很好的XML文件,如下所示: Boomerang – Error codes.xlsx Boomerang – Error codes This is the Boomerang error codes file Excel Boomerang 1 4 Issue Tracker v5.xlsx This is the issue tracker for Skipstone Excel Skipstone 1 4 然后我有我创建的架构,如下所示: 据我所知,xml文件无效,因为第一个元素是Assetd而不是Asset,但如果我运行我的c#代码: XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add(“http://tempuri.org/data.xsd”, “data.xsd”); XDocument doc = XDocument.Load(openFileDialog1.FileName); string msg = “”; doc.Validate(schemas, (o, err) => […]

使用C#中的德语小数分隔符对XML进行XML反序列化

我正在尝试从“德语”xml字符串反序列化Movie对象: string inputString = “” + “” + “5” + “1,99” // <– Price with German decimal separator! + "”; XmlSerializer movieSerializer = new XmlSerializer(typeof(Movie)); Movie inputMovie; using (StringReader sr = new StringReader(inputString)) { inputMovie = (Movie)movieSerializer.Deserialize(sr); } System.Console.WriteLine(inputMovie); 这里的Movie类供参考: [XmlRoot(“movie”)] public class Movie { [XmlAttribute(“title”)] public string Title { get; set; } [XmlElement(“rating”)] public […]

使用c#在特定节点之前插入XML节点

这是我的XML文件 使用C#,我需要插入此节点 在“a2”和“a3”节点之间。 任何指针如何排序?

为什么en-dash( – )会触发非法的XML字符错误(C#/ SSMS)?

这不是关于如何克服“XML解析:…非法xml字符”错误的问题,而是关于它为什么会发生的问题? 我知道有修复( 1,2,3 ),但在选择最佳解决方案之前需要知道问题出在哪里(导致错误的原因是什么?)。 我们使用C#调用基于Java的Web服务。 从返回的强类型数据中,我们创建了一个将传递给SQL Server的XML文件。 Web服务数据使用UTF-8进行编码,因此在C#中我们创建文件,并在适当的地方指定UTF-8: var encodingType = Encoding.UTF8; // logic removed… var xdoc = new XDocument(); xdoc.Declaration = new XDeclaration(“1.0”, encodingType.WebName, “yes”); // logic removed… System.IO.File.WriteAllText(xmlFullPath, xdoc.Declaration.ToString() + xdoc.Document.ToString(), encodingType); 这将在磁盘上创建一个包含以下(缩写)数据的XML文件: 请注意,在第二条记录中, -与–不同。 我相信第二个实例是en-dash 。 如果我在Firefox / IE / VS2015中打开该XML文件。 它打开没有错误。 W3C XMLvalidation器也可以正常工作。 但是,SSMS 2012不喜欢它: declare @xml XML = ‘ ‘; […]

使用linq到xml遍历xml树中的每个元素

我想遍历xml中的每个元素和属性,并在不知道元素名称的情况下获取名称值。 我甚至有一本关于使用C#的linq to xml的书,它只告诉我如何在我已经知道元素的名称时查询以获取元素的值。 下面的代码只给出了最高级别的元素信息。 我还需要达到所有降序元素。 XElement reportElements = null; reportElements = XElement.Load(filePathName.ToString()); foreach (XElement xe in reportElements.Elements()) { MessageBox.Show(xe.ToString()); }

在C#中,如何获取白色空间的XML节点值?

我有一个XML节点,其值为空白区域。 例: 我正在使用Serializer从XML文档中获取数据以将其存储在对象中。 现在,我面临的问题是:如果XML节点值只包含空格,就像上面的示例节点一样,序列化程序将其解释为string.Empty。 我怎么能克服这个? 我需要获得实际的空白区域,即“”。 谢谢你!

XmlSerializer:如何反序列化不再存在的枚举值

我正在使用XMLSerializer将此类保存到文件中。 该类有一个字符串和一个枚举,如下所示: public class IOPoint { string Name {get; set;} TypeEnum {get; set;} } public enum TypeEnum { Temperature, Pressure, Humidity, } 序列化时,它看起来像这样。 Relative Humidity Humidity 我一直在序列化和反序列化这个对象,几个版本都没有问题。 我不再想支持湿度,所以我将它从枚举中删除了。 但是,这会在从XML反序列化时导致exception,因为TypeEnum字段中的值Humidity不是TypeEnum的有效值。 这是有道理的,但如何处理呢? 我想做的就是忽略这个错误。 并将值保留为null。 我已经尝试实现OnUnknownElement XmlDeserilizationEvent类。 不幸的是,这并没有发现这个错误。 关于如何捕获和忽略此错误的任何想法(我可以在反序列化完成后清理)。 米奇

.net XmlSerialize抛出“无法在使用ConformanceLevel.Fragment创建的编写器上调用WriteStartDocument”

我试图序列化一个类,将XML文件写为多个片段,即将该类的每个对象写为单个片段,而不使用XML头/根。 以下是示例代码: [Serializable] public class Test { public int X { get; set; } public String Y { get; set; } public String[] Z { get; set; } public Test() { } public Test(int x, String y, String[] z) { X = x; Y = y; Z = z; } } class Program { static […]

未声明XML签名元素

我使用Visual StudioXML工具创建了XSD。 我使用以下C#代码来validationXML并面临此错误。 错误 该元素未声明为“ http://www.w3.org/2000/09/xmldsig#:Signature ”。 所以我的问题是如何解决它,因为在编辑模式下,XML有效100%? 谢谢! C# private void buttonValidateXML_Click(object sender, EventArgs e) { try { bool result = IsValidXml2(textBoxSignedXML.Text, textBoxXSDFile.Text, “”); rtbValidationResult.Text = result.ToString(); } catch (Exception ex) { rtbValidationResult.Text = ex.Message; } } public static bool IsValidXml2(string xmlFilePath, string xsdFilePath, string namespaceName) { var xdoc = XDocument.Load(xmlFilePath); var schemas = […]