gpt4 book ai didi

c# - XML 验证错误 : The element is not declared

转载 作者:数据小太阳 更新时间:2023-10-29 01:43:07 24 4
gpt4 key购买 nike

我正在 .NET 中构建一个 Web 服务,它将通过 XML 来回传递数据。我想使用我定义的 XSD 验证传入请求中的 XML。

这是 XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="POSearch">
<xs:sequence minOccurs="0" maxOccurs="10">
<xs:element name="POID" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

这是 XML:

<POSearch>
<POID>1</POID>
<POID>2</POID>
</POSearch>

这是 C# 中的验证代码:

static void Main(string[] args){
XmlSchemaSet iSchemas = new XmlSchemaSet();
iSchemas.Add(string.Empty, @"...xsd file location");

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema;
settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation;
settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);
settings.Schemas.Add(iSchemas);

XmlReader reader = XmlReader.Create(@"...xml file location", settings);

try {
while(reader.Read())
;
}
catch(Exception ex) {
Console.WriteLine(ex.Message);
}
}

private static void ValidationCallBack(object sender, ValidationEventArgs args) {
if(args.Severity == XmlSeverityType.Warning)
Console.WriteLine("\tWarning: Matching schema not found. No validation occurred." + args.Message);
else
Console.WriteLine("\tValidation error: " + args.Message);
}

我觉得我以前有这个工作,但我不完全确定为什么现在不工作了。每当我运行它时,我都会收到以下异常消息:

Validation error: The 'POSearch' element is not declared.

我的 XSD 定义有误吗?我的验证码错了吗?元素都清楚地在那里。非常感谢为我指明正确方向的任何帮助。

最佳答案

您声明了类型,但没有声明该类型的元素。

添加元素声明:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="POSearch" type="POSearch"/>

<xs:complexType name="POSearch">
<xs:sequence minOccurs="0" maxOccurs="10">
<xs:element name="POID" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

关于c# - XML 验证错误 : The element is not declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34657275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com