Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用XSD的XML验证在C中不起作用#_C#_Xml_Xsd - Fatal编程技术网

C# 使用XSD的XML验证在C中不起作用#

C# 使用XSD的XML验证在C中不起作用#,c#,xml,xsd,C#,Xml,Xsd,我有一个XML,我需要验证它不是和序列,我写了一些代码,但它不工作 XML 没有一个 AAA BBB XSD C#代码: public void ValidateXML1() { 列表_errors=新列表(); 尝试 { XmlSchemaSet schemase=新的XmlSchemaSet(); schemas.Add(“http://tempuri.org/NewApplicationSchema.xsd“,_sourceXsd); XDocument doc=XDocument

我有一个XML,我需要验证它不是和序列,我写了一些代码,但它不工作

XML


没有一个
AAA
BBB
XSD


C#代码:

public void ValidateXML1()
{
列表_errors=新列表();
尝试
{
XmlSchemaSet schemase=新的XmlSchemaSet();
schemas.Add(“http://tempuri.org/NewApplicationSchema.xsd“,_sourceXsd);
XDocument doc=XDocument.Load(_sourceXml);
字符串msg=“”;
文档验证(模式,(o,e)=>
{
_错误。添加(e.Message);
msg+=e.Message+Environment.NewLine;
});
}
捕获(例外e)
{
}
}

正如您所看到的,我没有在
XML
中提供
,但是在我的
XSD
中,它是m
inOccures=1
,当我运行此代码时,它验证并显示
错误消息=0
,但我预期不提供
值的错误。

您的XML文件缺少架构名称空间。换成

<TXLife xmlns="http://tempuri.org/NewApplicationSchema.xsd">
   ...
</TXLife>

...

您的XML文件缺少架构命名空间。换成

<TXLife xmlns="http://tempuri.org/NewApplicationSchema.xsd">
   ...
</TXLife>

...

XML是用户输入,那么如何在没有模式的情况下验证它呢?不确定它是否有效,但请尝试
schemas.Add(“,_sourceXsd”)
如果XML文档不包含架构中targetnamespace属性中定义的命名空间,它将无法正确验证。因此,您有两个选项更改模式或更改XML。加载XML后,您可以更改代码中的XML,将名称空间强制放入根元素。XML是用户输入,因此如何验证没有架构的XML?不确定它是否可以工作,但请尝试
schemas.Add(“,_sourceXsd))
如果XML文档不包含架构中targetnamespace属性中定义的命名空间,它将无法正确验证。因此,您有两个选项更改模式或更改XML。您可以在加载XML后更改代码中的XML,将名称空间强制放入根元素中。
public void ValidateXML1()
        {
            List<string> _errors = new List<string>();
            try
            {
                XmlSchemaSet schemas = new XmlSchemaSet();
                schemas.Add("http://tempuri.org/NewApplicationSchema.xsd", _sourceXsd);

                XDocument doc = XDocument.Load(_sourceXml);
                string msg = "";
                doc.Validate(schemas, (o, e) =>
                {
                    _errors.Add(e.Message);
                    msg += e.Message + Environment.NewLine;
                });
            }
            catch (Exception e)
            {

            }

        }
<TXLife xmlns="http://tempuri.org/NewApplicationSchema.xsd">
   ...
</TXLife>