Как удалить пустые строки из документа или узла XML с помощью C#?

Я хочу, чтобы все пустые строки были удалены в XML ниже, прежде чем записывать его в документ. Это может помочь узнать, что я использовал метод.DeleteSelf() класса XPathNavigator, чтобы избавиться от нежелательных узлов ранее (и это оставляет только пустые строки).

    <Person xmlns="http://someURI.com/something">
      <FirstName>Name1</FirstName>











       <MiddleName>Name2</MiddleName>


       <LastName>Name3</LastName>




     </Person>

2 ответа

Решение

Я бы предложил использовать XDocument учебный класс:

1. метод:

string xcontent = @" strange xml content here ";
XDocument xdoc = XDocument.Parse(xcontent);
xdoc.Save("FullFileName.xml");

2. метод:

XmlReader rdr = XmlReader.Create(new StringReader(xcontent));
XDocument xdoc = XDocument.Load(rdr);
xdoc.Save("FullFileName.xml");

возвращает:

<Person xmlns="http://someURI.com/something">
  <FirstName>Name1</FirstName>
  <MiddleName>Name2</MiddleName>
  <LastName>Name3</LastName>
</Person>

Документация MSDN: https://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument%28v=vs.110%29.aspx

Можно также делать построчное чтение и запись.

            string line = string.Empty;
            using (StreamReader file_r = new System.IO.StreamReader("HasBlankLines.xml"))
            {
                using (StreamWriter file_w = new System.IO.StreamWriter("NoBlankLines.xml"))
                {
                    while ((line = file_r.ReadLine()) != null)
                    {
                        if (line.Trim().Length > 0)
                            file_w.WriteLine(line);
                    }
                }
            }

Выходы:

<Person xmlns="http://someURI.com/something">
    <FirstName>Name1</FirstName>
    <MiddleName>Name2</MiddleName>
    <LastName>Name3</LastName>
</Person>
Другие вопросы по тегам