【问题标题】:I want to parse following string into XML using C#我想使用 C# 将以下字符串解析为 XML
【发布时间】:2014-02-17 07:28:46
【问题描述】:
<html>
<font color=#FF0000>Gaurang</font>
<font color=#00FF00>Bhavesh</font>
<font color=#FF0000>Bhupesh</font>
<font color=#FF0000>AAditya</font>
</html>

我想在 C# 中将上述字符串解析为 xml。 当我尝试它时会给出错误,例如“#”是一个意外的标记。预期的标记是 '"' 或 '''。

【问题讨论】:

  • 你目前用什么来解析?
  • 我认为这里缺少的链接是您不能将其解析为 XML,因为它不是有效的 XML。 @L.B 的答案是正确的解决方案。
  • 考虑 CsQuery 而不是 HtmlAgilityPack,因为它更简单、更快且更现代。 CQ.create(fileName)["font"].ToDictionary(e=&gt;e.InnerText",e=&gt;e.Cq().Attr("color"))

标签: c# xml parsing


【解决方案1】:

好像是html而不是xml,所以使用HtmlAgilityPack

var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(filename);
var colors = doc.DocumentNode.Descendants("font")
             .ToDictionary(e => e.InnerText, e => e.Attributes["color"].Value);


foreach(var color in colors)
{
    Console.WriteLine("{0}:{1}", color.Key, color.Value);
}

【讨论】:

  • 嗨 L.B.感谢您的回答。它工作正常,但我想知道是否可以在不使用 HtmlAgilityPack 的情况下这样做?我想避免使用第三方 dll。
  • @user3180333 仅部分有效的解决方案:stackoverflow.com/questions/1732348/…
【解决方案2】:

您发布的示例数据不是有效的 XML。 HTML 和 XML 之间存在差异,其中之一是大多数 Web 浏览器不需要在值周围加上引号,但大多数 XML 解析器需要。所以以下是有效的 XML:

<font color="#FF0000">Gaurang</font>

但这不是……

<font color=#FF0000>Gaurang</font>

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多