<legend id='2Z6EG'><style id='2Z6EG'><dir id='2Z6EG'><q id='2Z6EG'></q></dir></style></legend>

        <small id='2Z6EG'></small><noframes id='2Z6EG'>

          <bdo id='2Z6EG'></bdo><ul id='2Z6EG'></ul>
      1. <i id='2Z6EG'><tr id='2Z6EG'><dt id='2Z6EG'><q id='2Z6EG'><span id='2Z6EG'><b id='2Z6EG'><form id='2Z6EG'><ins id='2Z6EG'></ins><ul id='2Z6EG'></ul><sub id='2Z6EG'></sub></form><legend id='2Z6EG'></legend><bdo id='2Z6EG'><pre id='2Z6EG'><center id='2Z6EG'></center></pre></bdo></b><th id='2Z6EG'></th></span></q></dt></tr></i><div id='2Z6EG'><tfoot id='2Z6EG'></tfoot><dl id='2Z6EG'><fieldset id='2Z6EG'></fieldset></dl></div>
      2. <tfoot id='2Z6EG'></tfoot>
      3. 通过单一方法针对 XSD 验证 XML

        时间:2023-06-04
          <bdo id='sTnZQ'></bdo><ul id='sTnZQ'></ul>
        • <tfoot id='sTnZQ'></tfoot>

              <tbody id='sTnZQ'></tbody>
            <legend id='sTnZQ'><style id='sTnZQ'><dir id='sTnZQ'><q id='sTnZQ'></q></dir></style></legend>

            • <small id='sTnZQ'></small><noframes id='sTnZQ'>

                <i id='sTnZQ'><tr id='sTnZQ'><dt id='sTnZQ'><q id='sTnZQ'><span id='sTnZQ'><b id='sTnZQ'><form id='sTnZQ'><ins id='sTnZQ'></ins><ul id='sTnZQ'></ul><sub id='sTnZQ'></sub></form><legend id='sTnZQ'></legend><bdo id='sTnZQ'><pre id='sTnZQ'><center id='sTnZQ'></center></pre></bdo></b><th id='sTnZQ'></th></span></q></dt></tr></i><div id='sTnZQ'><tfoot id='sTnZQ'></tfoot><dl id='sTnZQ'><fieldset id='sTnZQ'></fieldset></dl></div>
                • 本文介绍了通过单一方法针对 XSD 验证 XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  我需要实现一个 C# 方法,该方法需要针对外部 XSD 验证 XML 并返回一个布尔结果,指示它是否格式正确.

                  I need to implement a C# method that needs to validate an XML against an external XSD and return a Boolean result indicating whether it was well formed or not.

                  public static bool IsValidXml(string xmlFilePath, string xsdFilePath);
                  

                  我知道如何使用回调进行验证.我想知道它是否可以在一个方法中完成,而不使用回调.我需要这个纯粹是为了美观:我需要验证多达几十种类型的 XML 文档,所以我想做如下简单的事情.

                  I know how to validate using a callback. I would like to know if it can be done in a single method, without using a callback. I need this purely for cosmetic purposes: I need to validate up to a few dozen types of XML documents so I would like to make is something as simple as below.

                  if(!XmlManager.IsValidXml(
                      @"ProjectTypesProjectType17.xml",
                      @"SchemasProject.xsd"))
                  {
                       throw new XmlFormatException(
                           string.Format(
                               "Xml '{0}' is invalid.", 
                               xmlFilePath));
                  }
                  

                  推荐答案

                  根据您是否要对非异常事件使用异常,我可以想到几个选项.

                  There are a couple of options I can think of depending on whether or not you want to use exceptions for non-exceptional events.

                  如果你传递一个 null 作为验证回调委托,如果 XML 格式错误,大多数内置验证方法都会抛出异常,因此你可以简单地捕获异常并返回 true/false视情况而定.

                  If you pass a null as the validation callback delegate, most of the built-in validation methods will throw an exception if the XML is badly formed, so you can simply catch the exception and return true/false depending on the situation.

                  public static bool IsValidXml(string xmlFilePath, string xsdFilePath, XNamespace namespaceName)
                  {
                      var xdoc = XDocument.Load(xmlFilePath);
                      var schemas = new XmlSchemaSet();
                      schemas.Add(namespaceName, xsdFilePath);
                  
                      try
                      {
                          xdoc.Validate(schemas, null);
                      }
                      catch (XmlSchemaValidationException)
                      {
                          return false;
                      }
                  
                      return true;
                  }
                  

                  想到的另一个选项是在不使用回调 标准的情况下突破的限制.除了传递预定义的回调方法,您还可以传递一个匿名方法并使用它来设置 true/false 返回值.

                  The other option that comes to mind pushes the limits of your without using a callback criterion. Instead of passing a pre-defined callback method, you could instead pass an anonymous method and use it to set a true/false return value.

                  public static bool IsValidXml(string xmlFilePath, string xsdFilePath, XNamespace namespaceName)
                  {
                      var xdoc = XDocument.Load(xmlFilePath);
                      var schemas = new XmlSchemaSet();
                      schemas.Add(namespaceName, xsdFilePath);
                  
                      Boolean result = true;
                      xdoc.Validate(schemas, (sender, e) =>
                           {
                               result = false;
                           });
                  
                      return result;
                  }
                  

                  这篇关于通过单一方法针对 XSD 验证 XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                • <small id='BSvaW'></small><noframes id='BSvaW'>

                    <bdo id='BSvaW'></bdo><ul id='BSvaW'></ul>

                      <legend id='BSvaW'><style id='BSvaW'><dir id='BSvaW'><q id='BSvaW'></q></dir></style></legend>
                        1. <i id='BSvaW'><tr id='BSvaW'><dt id='BSvaW'><q id='BSvaW'><span id='BSvaW'><b id='BSvaW'><form id='BSvaW'><ins id='BSvaW'></ins><ul id='BSvaW'></ul><sub id='BSvaW'></sub></form><legend id='BSvaW'></legend><bdo id='BSvaW'><pre id='BSvaW'><center id='BSvaW'></center></pre></bdo></b><th id='BSvaW'></th></span></q></dt></tr></i><div id='BSvaW'><tfoot id='BSvaW'></tfoot><dl id='BSvaW'><fieldset id='BSvaW'></fieldset></dl></div>
                          <tfoot id='BSvaW'></tfoot>

                            <tbody id='BSvaW'></tbody>