XML 中的错误:不允许空 XML 命名空间

Error in XML : Empty XML namespace is not allowed

提问人:AEP 提问时间:4/20/2023 更新时间:4/21/2023 访问量:129

问:

我正在尝试使用matlab阅读网页(即字典网页),并使用extractHTMLText将html数据转换为文本以获取一些信息,但MATLAB给出了以下错误: “XML 中的错误:不允许空 XML 命名空间。 由于我不是专业的程序员,所以对命名空间及其错误并不熟悉。 法典:

    url='https://www.vocabulary.com/dictionary/river';
    options = weboptions('Timeout', 10);
    code = webread(url,options);
    textData = extractHTMLText(code);

完全错误(测试是我的脚本名称):

    Error using htmlTree (line 67)
    Error in XML: xmlns:fb: Empty XML namespace is not allowed
    
    Error in extractHTMLText (line 40)
    tree = htmlTree(code);
    
    Error in test (line 12)
    textData = extractHTMLText(code)

正如你所看到的,MATLAB只在读取网页的文本分析部分存在问题(空命名空间错误)。

谁能帮我修复这个错误?谢谢。

注意:我检查了“code”变量,看看webread功能是否正常工作,然后在命令窗口中打印了这个变量。该变量包含HTML代码,这意味着HTML代码中可能没有问题。

html xml matlab xml-命名空间

评论


答:

0赞 Michael Kay 4/21/2023 #1

如果你用 curl 查看网页的内容,你会看到它开始:

<!DOCTYPE html>
<html lang="en-US" xmlns:vcom xmlns:fb>
<head>  

这不是格式正确的 XML - 属性必须具有名称和值 - 因此,如果您尝试使用 XML 解析器解析它,则会出现错误。

评论

0赞 AEP 4/21/2023
感谢您的指导。我删除了您提到的行并重新分析了文本,程序成功运行。我只有一个问题,因为我不是专业程序员,也不熟悉HTML的结构,那么MATLAB中是否有函数可以自动检测并删除使HTML代码的某些部分无法分析的情况?如果没有,你能为我提供一个功能吗?(当然,删除这些项目很容易,重要的是要认识到我无法识别无效项目)。
0赞 Michael Kay 4/21/2023
对不起,我不懂MATLAB。