为换行符

时间:2016-06-07 19:49:53

标签: c# xml newline xmlreader

我正在编写一个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;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您应该使用string.IsNullOrWhiteSpace

答案 1 :(得分:0)

解决:在整天用它完成后,我在张贴后用稍微清新的眼睛看着它,看到了明显的错误。我正在使用不正确的功能,并试图自己解决换行。通过用IsNullOrWhiteSpace(x)替换IsNullOrEmpty(x),我获得了预期的数据字符串。使用电子邮件地址执行代码现在很容易。