我在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]]><br /><![CDATA[Thomas Edison]]> </Paragraph></root>
我希望输出为Electrical TechnologiesSPACEThomas Edison
,但输出为Electrical TechnologiesThomas Edison
。
任何建议。
由于 [R
答案 0 :(得分:1)
由于HtmlDecode会将<
和>
转换为<
和>
,您可以尝试替换为HTML空格字符
。即。
text = text.Replace("<br />", " ");
^
答案 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);