帮助检查我的XML验证代码是否有效

时间:2009-06-21 16:01:35

标签: c# .net xml visual-studio-2008 encoding

我正在再次检查XML UTF-8编码中的特定输入字符串是否有效(可以用作XML元素的值)。我的目标是根据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());
            }
        }
    }
提前谢谢, 乔治

2 个答案:

答案 0 :(得分:1)

George,在编写测试时,最好从一个演示失败案例的测试开始。

您的代码会失败吗?我不这么认为。

您应该从接近导致您想要创建此测试的问题的测试开始。我认为你有一个XML文件没有正确编码的问题?在这种情况下,你应该创建一个测试,证明坏文件是坏的(你已经知道它是真的),然后概括测试,以便它可以检测其他坏文件是坏的,所有好文件是好的

答案 1 :(得分:1)

你可以这样做:

    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());
            }
        }
    }