C# 无效XML显示为有效XML

C# 无效XML显示为有效XML,c#,xml,validation,C#,Xml,Validation,我制作了一个XML模式来验证传入的XML文件,以验证它们是否是错误。 我有一些代码,当xml文件有效时应该返回true,否则应该返回false。 我还创建了两个XML文件,其中一个有效,另一个无效。然而,我的代码对它们都返回true,aka认为它们都有效。怎么会?我哪里出错了 模式: XMLSchemaError.xsd 要验证的2个XML文件: Valid.xml 无效的.xml文件 正如评论员所指出的,由于您的XML并没有声明包含任何经过相关模式验证的元素,所以这两个文档都很容易通过验证。它

我制作了一个XML模式来验证传入的XML文件,以验证它们是否是错误。 我有一些代码,当xml文件有效时应该返回true,否则应该返回false。 我还创建了两个XML文件,其中一个有效,另一个无效。然而,我的代码对它们都返回true,aka认为它们都有效。怎么会?我哪里出错了

模式: XMLSchemaError.xsd

要验证的2个XML文件: Valid.xml

无效的.xml文件

正如评论员所指出的,由于您的XML并没有声明包含任何经过相关模式验证的元素,所以这两个文档都很容易通过验证。它们没有什么可验证的

有多种方法可以纠正这种情况。最简单的方法是只向根元素添加一个默认的XML名称空间。例如:

<?xml version="1.0" encoding="UTF-8"?>
<note xmlns="http://tempuri.org/XMLSchemaError.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

我选择在XML中拼错元素名称,而不是修复模式,只是因为它简化了这个答案中所需的示例XML:。

您的模式描述了XML中的元素http://tempuri.org/XMLSchemaError.xsd. 您的两段XML都没有声明在任何名称空间中,也就是说,都没有使用任何xmlns attributesOkay。我对XML非常陌生,您能告诉我如何将名称空间属性添加到XML文件以使其工作吗?谢谢,这不仅解决了问题,而且我现在明白了我做错了什么:
private bool isValid = false;       

public bool checkValid(string fileName)
{
    try
    {
        var reader = XmlReader.Create("../../XMLFiles/" + fileName);
        XmlDocument doc = new XmlDocument();
        doc.PreserveWhitespace = true;
        doc.Load(reader);
        doc.Schemas.Add(null, "../../Model/XMLSchemaError.xsd");
        doc.Validate(ValidationCallBack);
        isValid = true;
    }
    catch
    {
        isValid = false;
    }            
    System.Diagnostics.Debug.WriteLine("Check: " + isValid);
    return isValid;
}

private void ValidationCallBack(object sender, ValidationEventArgs e)
{
    throw new Exception();
}
<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Server_ID>4</Server_ID>
    <Prioritizing>major</Prioritizing>
    <Type>test error</Type>
    <Thrown_by>test program</Thrown_by>
    <Code></Code>
    <Text></Text>
    <Time_occurred>2016-02-9T12:34:56.7890</Time_occurred>
</Error>
<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
<?xml version="1.0" encoding="UTF-8"?>
<note xmlns="http://tempuri.org/XMLSchemaError.xsd">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>
<?xml version="1.0" encoding="UTF-8"?>
<Error xmlns="http://tempuri.org/XMLSchemaError.xsd">
    <Server_ID>4</Server_ID>
    <Prioritizing>major</Prioritizing>
    <Type>test error</Type>
    <Thrown_by>test program</Thrown_by>
    <Code></Code>
    <Text></Text>
    <Time_occured>2016-02-09T12:34:56.7890</Time_occured>
</Error>