gpt4 book ai didi

java - 如何抑制java xpath错误

转载 作者:行者123 更新时间:2023-12-01 05:01:50 25 4
gpt4 key购买 nike

当我运行下面的代码时,我收到:

[Fatal Error] :1:1: Content is not allowed in prolog.
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.

我知道字符串 html 不允许包含内容,但我想抑制所有错误。

import java.io.ByteArrayInputStream;
import java.io.InputStream;

import org.w3c.dom.*;
import org.xml.sax.InputSource;

import javax.xml.xpath.*;
import javax.xml.parsers.*;
public class Test {

public static void main(String[] args){
String html="---<html><div id='teste'>Teste</div><div id='ola'>Ola tudo ebm!</div></html>";

try{

XPath xpath = XPathFactory.newInstance().newXPath();
String xpathExpression = "//div[@id='ola']";

InputStream is = new ByteArrayInputStream(html.getBytes());
InputSource inputSource = new InputSource(is);

NodeList nodes = (NodeList) xpath.evaluate
(xpathExpression, inputSource, XPathConstants.NODESET);

int j = nodes.getLength();

for (int i = 0; i < j; i++) {
System.out.println(nodes.item(i).getTextContent());
}

} catch (Exception e) {
e.printStackTrace();
}

}
}

最佳答案

首先,XML 与 HTML 不同,XPath 工作在 XML 数据模型上。

为了解决这个问题,您必须找到其他方法来解析输入流,因为当您解析该字符串时,调用的解析器是 XML 解析器,而 XML 解析器没有“忽略错误” ” 根据定义的选项。只允许有效输入;解析器的规范表明,格式不正确的输入应该导致致命异常。

因此,另一种选择是使用不同的解析器。那里有几个。例如,您可以使用 JTidy 。尽管它将 HTML 解析为 HTML DOM,但使用一点粘合代码就可以将其转换为适合解析。请参阅Question 3361263, Library to query HTML with XPath in Java .

关于java - 如何抑制java xpath错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com