Tag: xsd

如何使用XmlSerializer反序列化大型文档中的节点

我有一个大型的XML文档,我已经加载到XmlDocument ,我想使用XmlSerializer类将所选元素反序列化为使用xsd.exe生成的.NET类。 这是迄今为止我尝试过的MCVE; xsd和生成的类位于post的末尾。 正如代码中的注释所述,我收到了一个InvalidOperationException – was not expected : static string XmlContent = @” “; static void TestMcve() { var doc = new XmlDocument(); doc.LoadXml(XmlContent); var nsMgr = new XmlNamespaceManager(doc.NameTable); nsMgr.AddNamespace(“myns”, “http://MyNamespace”); var rootSerializer = new XmlSerializer(typeof(RootNode)); var root = (RootNode) rootSerializer.Deserialize(new XmlNodeReader(doc)); Console.WriteLine(root.Cars[0].make); // Works fine so far var node = doc.DocumentElement.SelectSingleNode(“myns:Cars”, nsMgr); […]

将多个行值从数据库传递到XML

我想以fllowing格式生成一个xml文件。 AutoCount Accounting 1.5 BApp Business Solutions XXX 2 6.00 YYY 3 50.00 我有一个网格有四列Docno,item,qty,price和两行数据。 但我只得到一个销售节点,其中包含网格中的最后一行数据。 我试过的代码如下, string PATH = “C:\\Samplex.xml”; CreateEmptyFile(PATH); var data = new AutoCount(); data.Product = “AutoCount Accounting”; data.Version = “1.5”; data.CreatedApplication = “BApp”; data.CreatedBy = “Business Solutions”; data.CreatedDateTime = DateTime.Now; for (int i = 0; i < dataGridView1.RowCount – 1; i++) { […]

xs:key,当键值不是键引用的成员时,为什么validation通过?

我有兴趣在我的Xsd中定义一个关键约束。 我的理解是,使用xs:key应该约束用于引用值列表的成员的值。 假设我们使用的是样本Xsd, 样品Xml, 而且,比方说,一些简单的validation [TestMethod] public void Test_Schema() { string schemaFileName = @”sampleSchema.xsd”; string xmlFileName = @”sampleXml.xml”; XmlReaderSettings settings = new XmlReaderSettings { ValidationType = ValidationType.Schema, ValidationFlags = XmlSchemaValidationFlags.ProcessInlineSchema | XmlSchemaValidationFlags.ProcessSchemaLocation | XmlSchemaValidationFlags.ReportValidationWarnings, }; settings.Schemas.Add (schema); settings.ValidationEventHandler += (o, e) => { throw new Exception(“CRASH”); }; XmlSchema schema = XmlSchema.Read ( File.OpenText (schemaFileName), (o, […]

从XSD生成C#类

这是xml shema,我希望使用xsd工具为C#生成类: Header of the document. Id of the target application. Id of the trader. Id of the trader application. Mime type of the document. Currently: text/xml application/pdf Opcionalni opis dokumenta. Maksimalna duljina je 255 znakova. 当我尝试使用时生成类 C:\test>xsd G2BDokument.xsd /Classes 我收到这条消息: Microsoft (R) Xml Schemas/DataTypes support utility [Microsoft (R) .NET Framework, Version 2.0.50727.3038] Copyright (C) […]

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) => […]

未声明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 = […]

没有Unicode字节顺序标记。 无法切换到Unicode

我正在用XSD编写XMLvalidation器。 下面是我做的,但是当validation器到达行时while (list.Read())它给了我错误 没有Unicode字节顺序标记。 无法切换到Unicode。 有人可以帮我解决吗? public class Validator { public void Validate(string xmlString) { Boolean bRet = true; string xmlPath = @”C:\x.xml”; string xsdPath = @”C:\general.xsd”; XmlReaderSettings Settings = new XmlReaderSettings(); Settings.Schemas.Add(“”, xsdPath); Settings.ValidationType = ValidationType.Schema; Settings.ValidationEventHandler += new ValidationEventHandler(SettingsValidationEventHandler); XmlReader list = XmlReader.Create(xmlPath, Settings); //StringBuilder output = new StringBuilder(); while (list.Read()) { } […]

我可以在由XSD C#生成的类创建的XML中的同一标记处具有null属性和其他属性吗?

我有一堆C#类,它们是从XSD自动生成的。 然后我基于那些C#类生成XML文件。 到目前为止还没有任何东西 问题: 生成的XML文件正在进行validation,validation需要使用xsi:nil=”true”所有XML标记的额外属性。 基本上标签应该如下所示: ,但我无法在C#中实现。 我的代码是: if (myObject.TestTag.HasValue) { t.testTag01 = new testTag01(); t.testTag01.Value = myObject.TestTag.Value; } //else //{ // t.testTag01 = new testTag01(); // t.testTag01.NV = “123123”;//Not Recorded //} 此代码生成SomeValue或 。 如果我取消注释ELSE ,结果将是: SomeValue或 。 所以我不知道如何获得validation工具所需的格式。 有任何想法吗 ? PS 这是自动生成的C#类: /// [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”,“4.0.30319.33440”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”) ] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true,Namespace =“http://www.blabla.org”)] public partial […]

使用SchematronvalidationXML

我正在尝试使用SchematronvalidationXML文件,这比XSD更复杂。 我google了很多,最好的事情是这个微软网站 。 但这只展示了如何使用NMatrix.SchematronvalidationXSD,这不是我需要的。 我有NMatrix.Schematron DLL但我不知道如何使用它们。 有谁知道如何使用它?

XSD文件,在哪里获取xmlns参数?

我正在使用XSD生成.cs文件的项目。 我的问题是关于字符串“ http://schemas.businessNameHere.com/SoftwareNameHere ”如果我改变它,它不起作用。 但http://不是一个有效的……背后的逻辑是什么,我在哪里可以获得有关放置什么或如何更改它的信息?