Как проверить правильность XML-строки в файле XSD? - PullRequest
0 голосов
/ 29 июня 2011

Моя функция взрывается в конструкторе XDocument.Сказать, что непробельные символы недопустимы.

public static bool ValidateXML(string xml, string xsd)
{
    StringBuilder sb = new StringBuilder();
    bool blnReturn = true;
    bool errors = false;
    XmlSchemaSet schemas = new XmlSchemaSet();
    schemas.Add("", XmlReader.Create(new StringReader(xsd)));
    XDocument xmlDoc = new XDocument(XmlReader.Create(new StringReader(xml)));

     //validate the XML text against the XSD
     xmlDoc.Validate(schemas, (o, e) =>
     {
          sb.AppendLine(e.Message);
          errors = true;
     });

     //if there are errors, display them and return false
     if (errors)
     {
         MessageBox.Show("XML did not parse cleanly. Please fix the following errors.\n\n" + sb.ToString(), "XML Parsing Results");
         blnReturn = false;
     }
     else
     {
         MessageBox.Show("XML Parsed cleanly. Saving to file.", "XML Parsing Results");
     }

     return blnReturn;
}

1 Ответ

0 голосов
/ 29 июня 2011

Я не вижу ничего плохого в коде. Вполне вероятно, что ваша строка XML является недействительным. Ошибка непропускных символов означает, что у вас есть текстовые символы «между» вашими элементами XML. Пример:

<blah>This text is okay</blah>This text isn't
<blah>More text</blah>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...