关于用XSD文件验证字符串型的XML中特定的字段只能是几个值
来源:互联网 发布:混沌战域仙翼进阶数据 编辑:程序博客网 时间:2024/05/16 11:19
1.我们的目标是验证一个XML中的字段中的ActionType只能是DispensedCardPurchase,NonDispensedCardPurchase,DispensedFixedValueCardPurchase,NonDispensedFixedValueCardPurchase,这几个值,
XSD文件:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace=
"http://schemas.datacontract.org/2004/07/Coinstar.Coin.Server.Conductor.Transaction.DataContract"
elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="ExtendConfiguration">
<xs:complexType>
<xs:sequence>
<xs:element name="ActionType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="DispensedCardPurchase"/>
<xs:enumeration value="NonDispensedCardPurchase"/>
<xs:enumeration value="DispensedFixedValueCardPurchase"/>
<xs:enumeration value="NonDispensedFixedValueCardPurchase"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
2.我们的程序中用C#代码和XSD文件来对XML文件进行验证
C#:
string ErrString = string.Empty;
public bool CheckXmlValidate(string strRequestXML)
{
StringReader sRead = null;
XmlReader xmlRead = null;
XmlSchemaSet schemaSet;
FortressAppSettings fortressAppSettings = new FortressAppSettings();
string filePath = fortressAppSettings.GetAppSetting("LoadCardPath");
try
{
schemaSet = new XmlSchemaSet();
sRead = new StringReader(strRequestXML);
schemaSet.Add(null, filePath);
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventCallBack);
settings.ValidationType = ValidationType.Schema;
settings.Schemas = schemaSet;
xmlRead = XmlReader.Create(sRead, settings);
while (xmlRead.Read())
{
}
bool result;
result = ErrString.ToString() == String.Empty ? true : false;
return result;
}
catch
{
throw new Exception("Data Struct is not correct");
}
finally
{
if (xmlRead != null)
{
xmlRead.Close();
}
}
}
private void ValidationEventCallBack(Object sender, ValidationEventArgs e)
{
if (e.Severity == XmlSeverityType.Warning)
{
ErrString = string.Empty;
}
else
{
ErrString = "Err:" + e.Message;
}
}
3.为了清晰期间,我给一个能够符合验证的XML字符串和一个不符合的XML字符串
符合的:
string requestXml = "<ExtendConfiguration xmlns=\"http://schemas.datacontract.org/2004/07/Coinstar.Coin.Server.Conductor.Transaction.DataContract\">
<ActionType>DispensedCardPurchase</ActionType></ExtendConfiguration>";
不符合的:
requestXml = "<ExtendConfiguration xmlns=\"http://schemas.datacontract.org/2004/07/Coinstar.Coin.Server.Conductor.Transaction.DataContract\">
<ActionType>DispensedPurchase</ActionType></ExtendConfiguration>";
会出现异常的:
string requestXml = "<ExtandConfiguration xmlns=\"http://schemas.datacontract.org/2004/07/Coinstar.Coin.Server.Conductor.Transaction.DataContract\">
<ActionType>DispensedCardPurchase</ActionType></ExtendConfiguration>"
- 关于用XSD文件验证字符串型的XML中特定的字段只能是几个值
- Xsd文件验证xml的java实现
- xsd文件验证xml的java实现
- xml文件的xsd验证失败信息
- 通过xsd验证xml合法性的例子。有验证程序,xml和xsd文件
- 关于XML的验证(DTD与XSD)一点实践
- 关于JAVA中 XSD 验证 XML 错误信息设置为中文的方法
- 解决Eclipse的XML验证错误:手动指定XSD文件
- 用dom4j如何使用Schema的xsd文件验证xml文件的合法性!
- 获取ini文件中所有块的特定字段值
- 用xsd验证XML文件,jdk5.0
- 关于规范xml的xsd文件一点总结
- xsd验证xml的两种方法
- Java XSD验证XML的方法总结
- 指定Spring的xml xsd验证
- 使用xsd文件验证xml
- XML validation for multiple schemas 验证使用多个XSD schema的XML文件
- XML文件和XSD文件的关系
- Log4j配置
- JS中容易被忽略的基础知识
- 导出数据到Excel方法(web 不需要安装office)
- NAND Flash的驱动程序设计
- JBoss下布署Spring2.5和Struts2系统
- 关于用XSD文件验证字符串型的XML中特定的字段只能是几个值
- SAS FUNCTIONS
- LoadRunner下DLL的调用
- JavaScirpt多个同时入栈和入队列顺序问题
- 关于C内存组织方式____结构体对齐
- log4j.properties配置详解
- js弹出的窗口居中显示
- du
- ucos-ii 之 OSTimeTick