Удалить ‹br/› из xmlnode

Мой XML может выглядеть так:

<div>
    <p>
       First Text
        <br/>
       Second Text
    </p>
</div>

Загружаем xml-файл, проходим по всем узлам со следующим кодом:

XmlDocument doc = new XmlDocument();
doc.Load(filepath);

foreach (XmlNode row in doc.SelectNodes("/div/p"))
{
    string subtext = row.InnerText;
    richtextbox.AppendText(subtext + "\n");
}

Результат всегда будет выглядеть так:

First TextSecond Text

Теперь проблема, очевидно, в том, что между первым и вторым текстом нет пробела (или даже разрыва строки). Итак, есть ли способ заменить это <br/> пробелом/разрывом строки?


person kyro0    schedule 10.06.2017    source источник
comment
Хотя я не знаю, как XMLDocument.Load пытается разобрать это, HTML — это не XML. HTML является подмножеством SGML, XML также является подмножеством SGML. Вместо этого вы должны использовать анализатор HTML или загружать только XML.   -  person Cameron Aavik    schedule 10.06.2017
comment
У вас html, а не xml. Методы XML будут работать только с некоторыми файлами html. Используйте библиотеку html вместо библиотеки xml.   -  person jdweng    schedule 10.06.2017
comment
@CameronAavik @jdweng - если бы это был HTML, br был бы <br>, а не <br/> (самозакрывающийся). В нынешнем виде это правильно сформированный XML.   -  person Daniel Haley    schedule 10.06.2017


Ответы (1)


Вы можете использовать следующий XPath:

doc.SelectNodes("/div/p/text()")

Это дает вам два текстовых узла до и после тега br.

person Alexander Petrov    schedule 10.06.2017
comment
К сожалению, в моем случае это не работает, потому что, как вы сказали, он создает два текстовых узла. Мне нужен этот узел целиком, без его разделения. - person kyro0; 11.06.2017