2009-11-07 8 views
1

업데이트 : 안녕하세요 파스칼, 빠른 답장을 보내 주셔서 감사합니다. 이것은 제가 원했던 거의 것입니다. newlink는 각 태그마다 다르므로 저에게 도움을 주시기 바랍니다.htmlParser를 사용하여 속성을 바꾸려면 어떻게해야합니까?

I는 입력 문자열에 나타나는 모든 링크 태그를 반복하기 만하면, 자신의 가치를 잡은

내가 자바 htmlParser를 사용하여 새로운 오전 링크 텍스트를 방해 밖으로 다른 링크로 교체 ,이 조건으로 나를 도와주세요.

htmlString = <a class="user" href="">first name</a> posted on <a class="user" href="">Test Test</a>'s wiki entry, <a href="http://localhost:8080/b/lll/ddd">werwrwrwerwerwer</a>, in 

나는 태그의 다른 링크에 <a class="user" href="">에서 href 링크를 교체해야합니다.

+0

질문의 서식을 지정해야합니다. 아마도 그때는 점점 더 명확해질 것입니다. – tangens

+1

이 뜻 이니? http://htmlparser.sourceforge.net/ –

+0

시도하고 >하고, 당신의 코드 예제를 읽을 그대로 < ... – JasonWyatt

답변

4

htmlparser을 HTML 파서로 사용하는 경우 visitors으로 일부 변환을 수행 할 수 있습니다.

예를 들어, 당신은 만들 수 있습니다 귀하의 a 태그 방문 NodeVisitor을 자신의 : 반환 된 노드 목록하는 Parser을 만든 다음

public class MyLinkVisitor extends NodeVisitor { 

    public MyLinkVisitor() { } 

    public void visitTag(Tag tag) { 
     if (tag.getTagName().equals("A")) { 
      LinkTag link = (LinkTag) tag; 
      link.setLink("http://newLink/"); //implement your logic here 
     } 
    } 
} 

를 HTML 문자열을 구문 분석하고 방문 :

Parser parser = new Parser(htmlString); 
NodeList nl = parser.parse(null); 
nl.visitAllNodesWith(new MyLinkVisitor()); 
System.out.println(nl.toHtml()); 

이를 그것을하는 한 가지 방법 일뿐입니다.

+0

안녕 파스칼, 빠른 회신 감사와 < and > 문자를 모두 교체, 이것은 거의이다 내가 원한거야. newlink는 각 태그마다 다르므로 저에게 도움을 주시기 바랍니다. 감사합니다. Micheal – user199471

+0

@Michael 제가 줄 주석에 쓴 것처럼, "여기에 논리를 구현해야합니다". 논리에 대한 힌트를 주면 도와 드릴 수 있지만 정확히 무엇을하고 싶은지 추측 할 수는 없습니다. 그러니 제발, 당신의 필요를 명확히하십시오. –

+0

파스칼, 알아. 도와 줘서 고마워. .. – user199471

관련 문제