Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将简单html“呈现”为字符串_C#_Java_Javascript_Python_Language Agnostic - Fatal编程技术网

C# 将简单html“呈现”为字符串

C# 将简单html“呈现”为字符串,c#,java,javascript,python,language-agnostic,C#,Java,Javascript,Python,Language Agnostic,是否有一个库可以将HTML解析为字符串对象,可以是Java、C或任何其他编程语言 这就是我的情况: 我有一些来自wysiwyg编辑器的文档,其中包含一些基本的html标记,如和其他类似的标记: <p>This &nbsp;</p><font>etc</font><br> <span> and this, etc. 当导出到其他工具时,它会转换为纯文本,使其无法读取。我现在要做的是:全选>另存为x.html>在浏览器

是否有一个库可以将HTML解析为字符串对象,可以是Java、C或任何其他编程语言

这就是我的情况:

我有一些来自wysiwyg编辑器的文档,其中包含一些基本的html标记,如和其他类似的标记:

<p>This &nbsp;</p><font>etc</font><br>
<span> and this, etc.
当导出到其他工具时,它会转换为纯文本,使其无法读取。我现在要做的是:全选>另存为x.html>在浏览器中打开>全选>粘贴

我知道它可以通过一个程序自动实现


有图书馆可以这样做吗?也就是说,要呈现简单的HTML?最好是一个字符串,我可以把它放到我的剪贴板。删除html标记是不够的,因为我会得到一条很长的线而没有回车。

如果我做对了,你想删除所有html标记,使用C很容易:

var plainText = Regex.Replace(htmlString.Replace("<br>", Environment.NewLine).Replace("&nbsp;", " "), @"<[^>]*>", String.Empty);
在java中,您可以使用


您可以提供ParserCallback来处理文本并忽略标记。

对于Python,您可以使用实体引用进行扩展,以执行您似乎需要的操作

from HTMLParser import HTMLParser
from htmlentitydefs import name2codepoint

class MLStripper(HTMLParser):
    def __init__(self):
        self.reset()
        self.fed = []
    def handle_data(self, d):
        self.fed.append(d)
    def handle_entityref(self, name):
        self.fed.append(unichr(name2codepoint[name]))
    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

print strip_tags('<html>olle&lt;</br>')
 olle<

有两种方法可以做到这一点:

编写任意复杂的解析器来清理数据。这就是其他答案所建议的。如果你的投入不是很核心,这通常是快速的胜利

但是,如果您有非常复杂的输入,并且想要高保真度,则可以使用真正的浏览器

一个非常简单的选择是使用。下面是一个使用innerText从网页中提取文本的示例:

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';
page.open('http://www.httpuseragent.org', function (status) {
    if (status !== 'success') {
        console.log('Unable to access network');
    } else {
        var ua = page.evaluate(function () {
            return document.getElementById('myagent').innerText;
        });
        console.log(ua);
    }
    phantom.exit();
});

还有一些选项,如MSIE或。不过,我怀疑,沿着这些路径走下去,学习曲线会非常陡峭。

听起来你没有渲染,而是想剥离html,对吗?@ChrisLively,没错。我不知道该选什么工作。render是我能想到的最接近的一个,因为我想保留etc。我更新了这个问题,以澄清.c+java+html=语言不可知,因为它们涵盖了地球上的大多数程序员?我想保留回车符,这样我就可以读它了。他说:“否则,我拥有的就是一条巨大的连续细绳,这很容易。”。现在看来可能是这样@斯蒂芬。那么...怎么样“容易吗?”斯蒂芬。以及其他代码,如&;等等。它在非ascii字符串方面有一些问题。。。阅读文档。。。