过程& lt;br /比;在c#

本文关键字:br lt 过程 | 更新日期: 2023-09-27 18:03:28

我试图在c#中处理xml时在输出中包含空格。

text = text.Replace("<br />", " ");
text = HttpUtility.HtmlDecode(text);
System.Xml.XmlDocument doc = new XmlDocument();
doc.LoadXml(text);
StringBuilder sb = new StringBuilder();
foreach (XmlNode node in doc.DocumentElement.ChildNodes)
{
          sb.Append(' ');
           sb.AppendLine(node.InnerText);
}
<root><Paragraph>
<![CDATA[       Electrical Technologies]]>&lt;br /&gt;<![CDATA[Thomas Edison]]> </Paragraph></root>

我希望输出是Electrical TechnologiesSPACEThomas Edison,但是输出是Electrical TechnologiesThomas Edison

任何建议。

谢谢R

过程& lt;br /比;在c#

由于HtmlDecode将&lt;&gt;转换为<>,您可以尝试用HTML空格字符&nbsp;代替。例如

text = text.Replace("&lt;br /&gt;", "&nbsp;");
                                     ^

我建议使用Linq to Xml来解析Xml。下面是提取CDATA值的方法:

var xdoc = XDocument.Load(path_to_xml);
var values = xdoc.Root.Element("Paragraph").Nodes()
                 .OfType<XCData>()
                 .Select(x => x.Value.Trim());

如果你想获得这个xml文件中所有CDATA节点的值:

var values = xdoc.DescendantNodes().OfType<XCData>().Select(x => x.Value.Trim());

这个查询返回两个条目:

[ "Electrical Technologies", "Thomas Edison" ]

您可以按照自己的意愿格式化输出。例如,在一个字符串中用空格连接值:

var result = String.Join(" ", values);