Помогите проверить, эффективен ли мой код проверки XML - PullRequest
0 голосов
/ 21 июня 2009

Я снова проверяю, является ли указанная входная строка действительной (может использоваться в качестве значения для элемента XML) в кодировке XML UTF-8. Моя цель - указать, какая строка (из входного массива строк) недопустима в соответствии со стандартом кодировки XML UTF-8.

Вот мой код, моя текущая реализация проста - собрать файл XML с каждой отдельной строкой из массива входной строки. Я не уверен, является ли это наиболее эффективным способом. С функциональной точки зрения это работает.

Моя рабочая среда .Net 3.5 + VSTS 2008 + C #.

    static void Main(string[] args)
    {
        string[] inputs = { "Hello", "World", "StackOverflow", "ServerFault", "&#DFFE" };
        XmlDocument xDoc = new XmlDocument();
        string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
        string formatter = "<foo>{0}</foo>";
        foreach (string item in inputs)
        {
            StringBuilder builder = new StringBuilder();
            builder.Append (header);
            builder.Append (String.Format(formatter, item));
            try
            {
                xDoc.Load(new StringReader(builder.ToString()));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }

спасибо заранее, George

Ответы [ 2 ]

1 голос
/ 21 июня 2009

Вы можете сделать что-то вроде этого:

    public static XmlElement xmlValidationElement =
        new XmlDocument().CreateElement("validator");

    static void Main(string[] args)
    {
        string[] inputs = { "Hello", "World", "StackOverflow", "ServerFault" };
        foreach (string item in inputs)
        {
            try
            {
                xmlValidationElement.InnerXml = item;
            }
            catch (XmlException ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
1 голос
/ 21 июня 2009

Джордж, при написании тестов лучше начинать с теста, который демонстрирует случай сбоя.

Ваш код когда-нибудь потерпит неудачу? Я так не думаю.

Вы должны начать с теста, который близок к проблеме, из-за которой вы хотите создать этот тест. Я предполагаю, что у вас была проблема с файлом XML, который не был должным образом закодирован? В этом случае вы должны создать тест, который доказывает, что плохой файл является плохим (что вы уже знаете, чтобы быть правдой), а затем обобщить тест, чтобы он мог обнаружить другие плохие файлы как плохие, а все хорошие файлы как хорошие .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...