Как я могу удалить пробелы, табуляции, новые строки между символами, используя c # REGEX? - PullRequest
0 голосов
/ 11 марта 2011

Как я могу удалить пробелы, символы табуляции, символы новой строки между ">" and "<", ">" and "</", а также пробел между <wiretype /> из строки ниже, сохраненной в текстовом файле с использованием C #?

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetReport xmlns="http://tempuri.org/">
      <RequestContext xmlns="">
        <userid>reds</userid><fcnumber>1</fcnumber><accountaccess /><wiretype /><currency /><accountheader>All</accountheader><clientname>Begum Noor</clientname><requestid>9999</requestid><ntid>reds</ntid>
      </RequestContext>
      <ReportParams>xyz</ReportParams>
    </GetReport>
  </soap:Body>
</soap:Envelope>

Я попробовал следующее, но он не удалил все пробелы:

static void Main(string[] args)
{
    string filename = args[0];
    StringBuilder result = new StringBuilder();
    if (System.IO.File.Exists(filename))
    {
        using (StreamReader streamReader = new StreamReader(filename))
        {
            String line;
            Regex r = new Regex(@">\s+<");
            while ((line = streamReader.ReadLine()) != null)
            {
                string newLine = r.Replace(line, @"><");
                result.Append(newLine);
            }
        }
    }
    Console.WriteLine(result);
    Console.ReadLine();

    using (FileStream fileStream = new FileStream(filename, FileMode.OpenOrCreate))
    {
        StreamWriter streamWriter = new StreamWriter(fileStream);
        streamWriter.Write(result);
        streamWriter.Close();
        fileStream.Close();
    }
}

Ответы [ 2 ]

7 голосов
/ 11 марта 2011

Почему вы не используете:

XDocument xdoc = XDocument.Load(filename);
xdoc.Save(filename, SaveOptions.DisableFormatting);

удалит все форматирование в вашем xml документе. Подробнее см. SaveOptions.DisableFormatting.

0 голосов
/ 11 марта 2011

Полагаю, вам лучше всего получить всю информацию от < до />.

<[^>]*/>

Затем вы можете выполнить замену в соответствующей части XML с помощью замены всехвашего языка.

( |\n|\t) to be replaced by ""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...