XML验证容易受到文化信息的影响

时间:2009-01-08 18:37:15

标签: c# xml-validation

项目结束前一天我遇到了一个复杂的问题:我有一个wtf服务和3个使用它的客户端应用程序。 service有三个方法,每个方法接收一个xml文档作为参数并返回xml文档。这是他们沟通的方式。我有一些xsd文件来验证生成和接收的xml。直到今天一切正常。我有光泽的窗户,今天我在英文窗口上运行我的应用程序。你可能已经意识到这一点,我从我的应用程序收到一条消息,说明收到的xml无效。我检查了它,并且在xml中支持为double的VaR值是用句点(或昏迷,我不记得但它不起作用)写的。 我现在想知道 - 这个问题有什么好的解决方案吗?我的意思是我像这样验证xml:

public bool IsValid(XDocument xmlDocument, Stream xsdContent)
        {
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            XmlReader reader = XmlReader.Create(xsdContent);
            schemaSet.Add(string.Empty, reader);

            valid = true;
            xmlDocument.Validate(schemaSet, (sender, eventt) => { valid = false; e
= eventt; });

            return valid;
        }

我无法告诉验证器double中的分隔符应该是什么。我能想到的唯一解决方案就是在xsd中简单地指定有问题的VaR值是一个字符串,然后检查programmaticaly是否是一个带有句点或昏迷的双数字。

1 个答案:

答案 0 :(得分:2)

XML schema spec指定使用句点表示浮点数而不使用逗号。语言环境对什么是有效XML没有任何影响。

您不包含错误。希望它抱怨数字中有一个逗号。