Java - 从xml获取src值

时间:2014-08-05 22:20:11

标签: java regex eclipse

我有一个来自xml节点的字符串:

<p>
  <a href="http://www.windoctor.it/hardware/amd-serie-a10-7850k-3-7-ghz-4-core/">
    <img align="left" hspace="5" width="100" src="http://www.windoctor.it/wp-content/uploads/2014/02/g_21948019_001.jpg" class="alignleft wp-post-image tfe" alt="g_21948019_001" title="" />
  </a>
  Processori AMD A-Series APU l&#8217;APU più avanzata di AMD, l&#8217;AMD A10-7850K. Talmente rivoluzionaria da sfidare la definizione stessa di processore. Con 12 core di elaborazione (4 CPU + 8 GPU)3 con la scheda grafica AMD Radeon™ R7 e funzioni esclusive come la tecnologia AMD TrueAudio4 per un audio coinvolgente, è in grado di gestire Battlefield 4™ o qualsiasi altra cosa desideri. I processori AMD A10 ti permettono di: Liberare tutto… 
  <span class="read-more">
    <a href="http://www.windoctor.it/hardware/amd-serie-a10-7850k-3-7-ghz-4-core/">
      Read More &#187;
    </a>
  </span>
</p>

<p>
  The post 
  <a rel="nofollow" href="http://www.windoctor.it/hardware/amd-serie-a10-7850k-3-7-ghz-4-core/">
    AMD SERIE A10-7850K
  </a>
  appeared first on 
  <a rel="nofollow" href="http://www.windoctor.it">
    Win Doctor
  </a>
  .
</p>

我想获取image标签的src属性中的值。在C#中,我在正则表达式函数中使用"<img.+?src=[\"'](.+?)[\"'].+?>"但在java中它不起作用。

提前致谢:)

2 个答案:

答案 0 :(得分:0)

你可以做这样的事情

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.FileUtils;

public class Image{

    public static void main(String[] args) throws Exception {
        String s = FileUtils.readFileToString(new File(
                "E:\\workspace\\XYZ\\src\\xpath.txt"));

        Pattern p = Pattern.compile(
                "(.*?)(<img)(.*?)(src=\")(.*?)(\")(.*?)(\\/>)(.*?)",
                //                       ^^^^^
                // 1     2    3     4      5   6    7    8     9
                Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
        Matcher m = p.matcher(s);
        while (m.find()) { //use while to find all images, and if for only the first one
            System.out.print(m.group(5));
        }
    }
}

PS。 http://txt2re.com帮了很多忙。

答案 1 :(得分:-1)

你需要逃避反斜杠。

但更好的方法是使用XPath。