【问题标题】:HtmlAgilityPack and php tagsHtmlAgilityPack 和 php 标签
【发布时间】:2013-04-17 20:48:25
【问题描述】:

我正在尝试使用 HtmlAgilityPack 识别、更改并保存文档。但是如果一个文档包含 php-tags,它们会在尝试保存时出错。正则表达式不想用,有很多坑。这个问题有什么优雅的解决方案吗?

代码:

var Doc = new HtmlAgilityPack.HtmlDocument();
Doc.DetectEncodingAndLoad("page.html");
.............
string Result = Doc.DocumentNode.OuterHtml;

来源:

<html>
<?php echo "hello"; ?>
</html>

结果:

<html>
<?php echo="" "hello";=""?>
</html>

提前致谢。

【问题讨论】:

  • 为什么要将 PHP 源文件修改为 HTML?
  • 我有带有 php-includes 的模板。

标签: c# php tags html-agility-pack


【解决方案1】:

今天不支持,但如果你改变源代码并重新编译,你可以修复它(毕竟,这就是开源的用途......)。进入HtmlNode.cs,找到internal void WriteAttributes(TextWriter outText, bool closing)函数,添加如下代码:

internal void WriteAttributes(TextWriter outText, bool closing)
{
    if (Name.StartsWith("?"))
    {
        int len = _outerlength - 3 - _namelength;
        if (len > 0)
        {
            outText.Write(OwnerDocument.Text.Substring(_namestartindex + _namelength, len));
            return;
        }
    }
    ....
}

【讨论】:

  • 问题在于 htmlagilitypack 将 "”(例如:echo "";),它们将不起作用。
  • 我不明白。如果您像我说的那样修改 Html Agility Pack 源代码,它会回答您的问题。如果您还有其他问题,请创建另一个问题。
猜你喜欢
  • 2012-09-27
  • 2012-12-28
  • 2013-12-25
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 2021-09-26
  • 2015-03-27
  • 1970-01-01
相关资源
最近更新 更多