gpt4 book ai didi

java - Android:提取两个 HTML 标签之间的文本

转载 作者:行者123 更新时间:2023-12-01 15:37:03 24 4
gpt4 key购买 nike

我需要提取两个 HTML 标记之间的文本并将其存储在字符串中。我要解析的 HTML 示例如下:

<div id=\"swiki.2.1\"> THE TEXT I NEED </div>

我已经使用模式 (swiki\.2\.1\\\")(.*)(\/div) 在 Java 中完成了此操作,并从组中获取了我想要的字符串$2。但是这在android中不起作用。当我去打印$2的内容时,什么也没有出现,因为匹配失败。

有没有人在 android 中使用正则表达式时遇到类似的问题,或者是否有更好的方法(非正则表达式)来首先解析 HTML 页面。同样,这在标准 java 测试程序中工作得很好。任何帮助将不胜感激!

最佳答案

对于 HTML 解析,我总是使用 HtmlCleaner: http://htmlcleaner.sourceforge.net/

很棒的库,与 Xpath 以及 Android 配合得很好。 :-)

这展示了如何从 URL 下载 XML 并解析它以从 XML 属性获取特定值(也在文档中显示):

public static String snapFromHtmlWithCookies(Context context, String xPath, String attrToSnap, String urlString,
String cookies) throws IOException, XPatherException {
String snap = "";

// create an instance of HtmlCleaner
HtmlCleaner cleaner = new HtmlCleaner();

// take default cleaner properties
CleanerProperties props = cleaner.getProperties();

props.setAllowHtmlInsideAttributes(true);
props.setAllowMultiWordAttributes(true);
props.setRecognizeUnicodeChars(true);
props.setOmitComments(true);

URL url = new URL(urlString);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);

// optional cookies
connection.setRequestProperty(context.getString(R.string.cookie_prefix), cookies);
connection.connect();

// use the cleaner to "clean" the HTML and return it as a TagNode object
TagNode root = cleaner.clean(new InputStreamReader(connection.getInputStream()));

Object[] foundNodes = root.evaluateXPath(xPath);

if (foundNodes.length > 0) {
TagNode foundNode = (TagNode) foundNodes[0];
snap = foundNode.getAttributeByName(attrToSnap);
}

return snap;
}

只需根据您的需要进行编辑即可。 :-)

关于java - Android:提取两个 HTML 标签之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710373/

24 4 0