我正在编写一个C#类,用于生成在进程成功或失败时使用的电子邮件列表。在从Web上运行XmlReader示例时,我发现验证Read()比看起来更难。
我可以使用string.IsNullOrEmpty(x)来测试空值或空节点,但它仍然会在x的工具提示中显示“\ n”的测试结果。测试“\ n”,“\ n”,“\ n”。 “\ n”或char(13)都失败了。如果我使用x.Contains((char)13),它总是找到它并进入试图构建电子邮件地址列表的代码。到目前为止,它总是失败或总是成功。
我在stackoverflow上发现了一些旧帖子,似乎问题是相同的,但我的结果与答案不符。我的环境是使用.Net Framework 4.51运行Visual Studio 2013的Windows 8.1。我在班级使用解决方案之前尝试做的工作的例子是Microsoft.com
我的转换如下:
using System;
using System.Text;
using System.Linq;
using System.Xml;
using System.Xml.Schema;
using System.IO;
using System.Collections.Generic;
namespace XMLDemo
{
public class project
{
public static void Main()
{
string uri = @"C:\\events\items.xml";
string process_state = "Item";
string emails = StreamEmailAddress(uri, process_state);
}
private static string StreamEmailAddress(string uri, string process_state)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;
XmlReader reader = XmlReader.Create(uri, settings);
string returnValue = "";
reader.MoveToContent();
while (reader.Read())
{
string x = reader.Value;
if ((string.IsNullOrEmpty(x) == false) && (x.Contains((char)13)))
{
returnValue = returnValue + x + "; ";
}
}
Console.WriteLine("Made it to the end: " + returnValue);
return returnValue;
}
}
}
答案 0 :(得分:1)
您应该使用string.IsNullOrWhiteSpace
答案 1 :(得分:0)
解决:在整天用它完成后,我在张贴后用稍微清新的眼睛看着它,看到了明显的错误。我正在使用不正确的功能,并试图自己解决换行。通过用IsNullOrWhiteSpace(x)替换IsNullOrEmpty(x),我获得了预期的数据字符串。使用电子邮件地址执行代码现在很容易。