java - 替换Java中IMG标签中的src属性

标签 java html html-parser

我有一个 HTML 文档,需要更新 IMG 标记的 text 和 src 属性。我在 Java 工作。我想替换 H​​TML 中的以下字符串:DataName、DataText 和 DataIcon。

<body>

<h1 align="center">DataName</h1>

<div class="tabber">

     <div class="tabbertab">
      <h2>Info</h2>
      <p>DataText</p>
     </div>


     <div class="tabbertab">
      <h2>Pictures</h2>
        <div id="album">
            <ul class="gallery">
                <li><a href="#nogo" tabindex="1">1<img src=DataIcon alt="landscape image 1" title="landscape image 1" /></a></li>
                <li><a href="#nogo" tabindex="1">2<img src="C:\thesis\100GreatP\eclipse_ws\test\data\pictures\1\pyramid2.jpg" alt="landscape image 2" title="landscape image 2" /></a></li>
            </ul>
        </div>   
     </div>

     <div class="tabbertab">
      <h2>Video</h2>

     </div>

</div>

虽然我已经成功替换了字符串 DataName 和 DataText,但我还没有成功地将 DataIcon 替换为以字符串形式存储在数据库中的 imageURL。检查调试表明它只是无法搜索 DataIcon 字符串。我正在使用 HTMLparser,并且我编写了以下类来应用该问题:

public class MyNodeVisitor extends NodeVisitor {
        String name;
        String text;
        String icon;

        public MyNodeVisitor() {

        }

        public MyNodeVisitor(String IconPath, String Name, String Text){
            this.name = Name;
            this.text = Text;
            this.icon = IconPath;
        }

        public void visitStringNode (Text string)
        {
            if (string.getText().equals("DataName")) {
                string.setText(name);
            }

            else if(string.getText().equals("DataIcon")){
                     string.setText(icon);

            }
            else if (string.getText().equals("DataText")){
                  string.setText(text);
            }
        }
    }

该类已以这种方式应用到我的应用程序代码中

        NodeList nl = new NodeList();
        String htmlString = null;
        InputStream contentStream = null;
        String textString = null;       
        String resultStr = getDatabaseAttribute(name,"DESCRIPTION");
        String resultStr2 = getDatabaseAttribute(name,"NAME");
        String resultStr3 = getDatabaseAttribute(name,"ICON_path");


        try
        {
            // Read the URL content into a String using the default encoding (UTF-8).
        contentStream = WWIO.openFileOrResourceStream(BROWSER_BALLOON, this.getClass());
            htmlString = WWIO.readStreamToString(contentStream, null);

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            WWIO.closeStream(contentStream, resultStr);
        }


        try {
            Parser parser = new Parser(htmlString);
            nl = parser.parse(null);

            nl.visitAllNodesWith(new MyNodeVisitor(resultStr3, resultStr2,resultStr));
            nl.toString();

        } catch (ParserException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        String output = nl.toHtml();

        return output;  

有人可以帮我吗?整个问题是它无法在 IMG 标记中搜索 DataIcon 字符串。感谢您的帮助。

最佳答案

您的 img 标记不是 StringNode。您需要重写 visitTag(Tag tag) 方法并处理 Tag 对象。

类似于(未编译)

public void visitTag(Tag tag) {
    if ("img".equals(tag.getTagName())) {
        if ("DataIcon".equals(tag.getAttribute("src"))) {
            tag.setAttribute("src", icon);
        }
    }        
}

关于java - 替换Java中IMG标签中的src属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690171/

相关文章:

regex - 如何使用 Perl 有选择地修改 HTML 文档中脚本标记的 src 属性?

java - 在 Java 中的值后面分割 int

html - 如何强制图像在同一行对齐?

Delphi 使用 HtmlP 解析 HTML

JavaScript 图像裁剪/矩形选择图像

html - 用于存储音频的 IndexedDB

JAVA - 我需要将 JSOUP 中的相对路径更改为绝对路径

java - 越界了,为什么?

java获取方法集合

java - Spring 。访问 Thymeleaf 中的配置变量。