过程< BR />在C#中

时间:2014-05-15 15:56:17

标签: c# xml html-agility-pack

我在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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我建议使用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);