Tag: xsd

validation大型Xml文件

作为转换大型Xml文件的后续问题,我现在需要validation架构。 我正在使用这种扩展方法,由于它也无法正常工作,因此可以明显改进 public static XElement ValidateXsd(this XElement source, string xsdPath) { var errors = new XElement(“Errors”); // Reference: http://msdn.microsoft.com/en-us/library/bb358456.aspx var xsd = XDocument.Load(xsdPath); var xml = XDocument.Load(source.CreateReader()); var schemas = new XmlSchemaSet(); schemas.Add(“”, xsd.CreateReader()); if (xml.Document != null) { xml.Document.Validate(schemas, // Validation Event/Error Handling (sender, e) => { var message = e.Message .Replace( “element is […]

在不考虑xml namesapce的情况下,针对xsdvalidationxml

我正在使用以下代码来validation我的xml对xsd。 var isXmlValid = true; var vinListMessage = “”; var xsdFilePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, “schema.xsd”); var schemas = new XmlSchemaSet(); schemas.Add(null, xsdFilePath); var xmlDocument = XDocument.Parse(vinListMessage); xmlDocument.Validate(schemas, (o, e) => { isXmlValid = false; }); Console.WriteLine(isXmlValid); 请注意上面xml中的xmlns,其urn:test/properties/v1.0 。 现在在我的xsd中,我将targetnamespace作为targetNamespace=”urn:testnew/properties/v1.0″ ,这与xml中的不同。 现在无论我尝试针对xsdvalidationxml,它总是返回true。 但如果我匹配名称空间,那么它的工作正常。 我想避免依赖命名空间。 有什么建议?

在c#中访问XSD文件的元素

我已经搜索了S / O但没有找到任何解决我的问题的东西(虽然C# – 解析XSD架构 – 让所有元素到了combobox都有所帮助)。 在下面的XSD文件中,我需要获取嵌套元素的名称(SectionA然后到AX010_1,AX040_1 ..然后到SectionB和BX010_1,BX070_1等) 如何访问嵌套元素?

如何在运行时validationxml对xsd而不保存本地文件夹中的xsd文件?

我的目标是针对xsd whitch在字符串变量中validationxml文件。 Ps。:我周五已经写了一个编号为3072697的问题。 但我今天无法添加此代码。 是book.xml: Herman Melville book.xsd: Xsd_after_saved()完美地在Xsd_after_saved()中,我需要使用XSD的每个地方,我从本地获取文件 public void Xsd_after_saved() { XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationEventHandler += this.ValidationEventHandler; settings.ValidationType = ValidationType.Schema; settings.Schemas.Add(null, XmlReader.Create(@”C:\book.xsd”)); settings.CheckCharacters = true; XmlReader XmlValidatingReader = XmlReader.Create(@”C:\book.xml”, settings); XmlTextReader Reader = new XmlTextReader(@”C:\book.xml”); StreamReader SR = new StreamReader(@”C:\book.xsd”); XmlSchema Schema = new XmlSchema(); Schema = XmlSchema.Read(SR, ValidationEventHandler); XmlValidatingReader ValidatingReader […]

XmlSerializer:删除xmlns:xsd但保留xmlns:xsi

我正在使用此方法生成XML: using (MemoryStream msRes = new MemoryStream()) using (StreamWriter objStreamWriter = new StreamWriter(msRes)) using (XmlWriter xw = XmlWriter.Create(objStreamWriter, new XmlWriterSettings() { Indent = true, IndentChars = String.Empty })) { XmlSerializer serializer = new XmlSerializer(doc.GetType()); serializer.Serialize(xw, doc); return msRes.ToArray(); } 结果是我有这样的行 。 我想删除属性xmlns:xsd=”http://www.w3.org/2001/XMLSchema”但保留xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns=”urn:iso:std:iso:20022:tech:xsd:camt.054.001.02″ 。 我怎样才能做到这一点 ? 谢谢你的帮助 !

按特定顺序将并行数组序列化为C#中的XML

我目前的任务是将数据发送到具有指定列表的奇怪方式的Web服务。 我无法控制架构,我尝试让另一方更改架构失败了。 所以我几乎坚持这一点。 它们的模式定义方式是这样的(仅包含相关位): 我使用xsd.exe生成一个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=”the namespace”)] public partial class PartList { [System.Xml.Serialization.XmlElementAttribute(“Name”, Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public string[] Name { get; set; } [System.Xml.Serialization.XmlElementAttribute(“Data”, Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public string[] Data { get; set; } [System.Xml.Serialization.XmlElementAttribute(“OtherData”, Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] public string[] OtherData { get; set; } } 是的,并行数组。 现在,根据他们的文档(以及来自通过其他方式生成XML的另一方的轶事数据),正确/预期的xml应该如下所示(例如,包含两个项目的列表 – 为了说明目的添加注释内联): Some Test 123131313 0.11 […]

C#使用XSD文件validationXML文件

我有一个XML文件 – 它是从解析器生成的, 我有一个XSD文件 。 关键是使用XSD文件(来自特定路径)validationXML文件(来自特定路径),如果已validation,则返回标志。 我看到的大部分代码都没有使用XSD文件来validation。 有没有办法使用XSD 文件validationXML 文件 ?

发布使用XSD反序列化字符串

我在尝试使用XSD反序列化XML字符串时遇到了麻烦。 我正在使用c#/ Asp.Net和DataContractSerializer。 这是从第三方返回的字符串: 11625807 Declined 1 No Qualified Buyers Found 这是我正在尝试创建的类: [DataContract(Name = “ApplicationResponse”, Namespace = “”)] public class SCFResponse { [DataMember] public string Id { get; set; } [DataMember] public string Status { get; set; } [DataMember] public string Response { get; set; } [DataMember] public decimal Price { get; set; } [DataMember] […]

通过c#不接受XML中的日期时间值

无法将datetime.now值传递给节点’createddatetime’。 输出xml文件丢弃该节点。 我使用以下代码, 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; /* this line*/ var serializer = new XmlSerializer(typeof(AutoCount)); using (var stream = new StreamWriter(PATH)) serializer.Serialize(stream, data); 而且输出是: AutoCount Accounting 1.5 BApp Business Solutions 代替 : […]

计算与xsd(C#)中的正则表达式匹配的字符串的最大可能长度

我正在使用XSD,我可以从XSD访问模式作为字符串。 一个例子: 给了我C#字符串 string pattern = “[0-9]{8}”; 从我从XSD(可能是任何有效的XSD模式条目)获得的模式字符串,我试图找出XML中字段的内容可能的最大可能长度。 在这个简单的例子中,它显然是8 – 我可以通过检查{n}并假设它是长度来解决这个问题。 在其他模式中,我也可以检查*或+并假设无限制 – 但我正在寻找可用于执行此操作的更通用的方法。 请注意,模式字符串不保证与.Net的Regex类兼容。 我也可以访问XmlSchemaPatternFacet类,这是我用来解析XSD的第一个地方,如果有任何帮助的话。 谢谢你提供的所有帮助