从xml节点中删除<br/>

3

我的 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/>


1
尽管我不知道XMLDocument.Load如何尝试解析它,但HTML并不是XML。 HTML是SGML的一个子集,而XML也是SGML的一个子集。 你应该使用HTML解析器或仅加载XML。 - Cameron Aavik
你有HTML而不是XML。XML方法只能在某些HTML文件上工作。使用HTML库而不是XML库。 - jdweng
1
@CameronAavik @jdweng - 如果这是HTML,那么换行符应该是<br>而不是<br/>(自闭合)。就目前而言,它是格式良好的XML。 - Daniel Haley
1个回答

0
您可以使用以下XPath:
doc.SelectNodes("/div/p/text()")

它会在 br 标签前后给你两个文本节点。


很遗憾,这在我的情况下不起作用,因为正如你所说,它会创建两个文本节点。我需要整个节点,而不是将其拆分。 - kyro0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接