XML验证C#本地化

时间:2013-09-18 06:46:20

标签: c# xml validation localization xsd

我正在根据一些数据生成XML。文化被设置为德语,因此数字以1087,1格式生成(因为在德语中它们使用逗号而不是小数)。 问题是,当我尝试验证XML时,验证失败,因为它期望数字为英文格式(1087.1)并将1087,1视为字符串而不是数字。

有没有办法可以用德语数字格式验证?或者我需要生成英文数字格式的XML吗?以下是我用来验证XML的代码

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas = xmlSchemaSet;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("Test.xml", settings);

while (reader.Read())
{
     if (!isXmlValid)
       break;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您想依赖内置的数据类型(例如十进制),那么它就不会对您有用,因为XSD的内置词汇表示是设计文化不变的。

如果您希望坚持生成数字的方式,那么您必须使用基于xsd:string的自定义数据类型的XSD。缺点是您在使用强类型的标准绑定时会遗漏...

其他人可能会说在消费之前应用转换,基本上插入自定义处理以补偿这种词汇差异。