.xsd文件是否也可以通过编码类型来验证.xml文件?
我们有一个系统无法读取xml文件,如下所示:
<?xml version="1.0" encoding="utf-16" standalone="yes"?>
所以我想在将它们提供给该系统之前验证它们并检查它们是否以
开头<?xml version="1.0" encoding="utf-8" standalone="yes"?>
答案 0 :(得分:1)
不,XSD不能这样做。它是关于验证XML文档的内容,如果它们只是具有不同的编码,则两个XML文档是相同的。
为什么不简单地使用正确的编码发送数据?
提示:当你看到来自.NET程序的UTF-16时,通常是因为你已经将XML写入字符串,可能是通过StringWriter。由于.NET中的字符串是Unicode,因此会自动生成UTF-16编码。我不相信可以改变,但如果你不把它输出到一个字符串,那么你没有问题。
答案 1 :(得分:0)
在.NET中,您可以从XML文档顶部的XmlDeclaration实例检查XML声明。
XmlTextReader reader = new XmlTextReader(@"C:\books.xml");
while (reader.Read())
{
XmlNodeType type = reader.NodeType;
switch (type)
{
case XmlNodeType.XmlDeclaration:
//do something with reader
break;
}
}