2009-09-03 8 views
1

Est-il possible qu'un fichier .xsd valide également un fichier .xml par type de codage?Est-il possible pour un fichier .xsd de valider un fichier .xml en codant le type

Nous avons un système qui ne peut pas lire les fichiers xml à partir comme ceci:

<?xml version="1.0" encoding="utf-16" standalone="yes"?> 

Je veux les valider avant de les nourrir à ce système et vérifier si elles commencent par

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 

Répondre

1

Non, XSD ne peut pas faire cela. Il s'agit de valider le contenu d'un document XML, et les deux documents XML sont identiques s'ils ont simplement des codages différents. Pourquoi ne pas simplement leur envoyer des données avec le codage correct?

Astuce: lorsque vous voyez UTF-16 provenant d'un programme .NET, c'est souvent parce que vous avez écrit votre XML dans une chaîne, éventuellement via un StringWriter. Comme les chaînes en .NET sont Unicode, cela rend automatiquement l'encodage UTF-16. Je ne crois pas que cela puisse être changé, mais si vous ne le produisez pas en chaîne, alors vous n'avez pas le problème.

0

Dans .NET, vous pouvez vérifier la déclaration XML à partir de l'instance XmlDeclaration en haut de votre document 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; 
    } 
} 
Questions connexes