我正在再次检查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());
}
}
}
提前谢谢,
乔治
答案 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());
}
}
}