Java - HTML代码:提取标记的一部分

时间:2014-06-04 13:41:37

标签: java html split

我必须从html代码的标记中提取一些整数。 例如,如果我有:

< tag blabla="title"><a href="/test/tt123> TEST 1 < tag >

我做了删除所有字符并只留下数字,直到标题名称中还有另一个数字,所以我得到了#34; 1231&#34;。

str.replaceAll("[^\\d.]", "");

如何才能仅提取&#34; 123&#34;整数??谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

Jsoup是一个很好的api来玩html。使用它你可以做

String html = "<tag blabla=\"title\"><a href=\"/test/tt123\"> TEST 1 <tag>";
Document doc = Jsoup.parseBodyFragment(html);
String value = doc.select("a").get(0).attr("href").replaceAll("[^\\d.]", "");
System.out.println(value);

答案 1 :(得分:0)

你可以这样做(一种删除任何数字中所有重复项的方法):

int[] foo = new int[str.length];
for(int i = 0; i < str.length; i++) {
    foo[i] = Integer.parseInt(str.charAt(i));
}

Set<Integer> set = new HashSet<Integer>();

for(int i = 0; i < foo.length; i++){
  set.add(foo[i]);
}

现在你有了一个集合,其中删除了任何字符串中的所有重复数字。我没看到你最后的评论。所以这个答案对你来说可能不是很有用。你可以做的是foo数组中的三个第一个数字,它们将给你123.

答案 2 :(得分:0)

首先使用XPath来解析href值,然后应用replaceAll来达到您想要的效果。

您无需下载任何其他框架或库,以便实现此目的。

这是一个关于其工​​作原理的快速演示课程:

package com.example.test;

import java.io.StringReader;

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.xml.sax.InputSource;


public class Test {


    public static void main(String[]args){

        String xml = "<tag blabla=\"title\"><a href=\"/test/tt123\"> TEST 1 </a></tag>";

        XPath xPath = XPathFactory.newInstance().newXPath();

        InputSource source = new InputSource(new StringReader(xml));

        String hrefValue = null;
        try {
            hrefValue = (String) xPath.evaluate("//@href", source, XPathConstants.STRING);
        } catch (XPathExpressionException e) {
            e.printStackTrace();
        }

        String numbers = hrefValue.replaceAll("[^\\d.]", "");

        System.out.println(numbers);

    }

}