2012-07-01 3 views
1

이상한 문제가 발생하여 웹에서 아무것도 찾을 수 없습니다.전체 요소를 대체하는 vtd-xml

임 내 XML 청크를 찾은 후 뭔가 다른 예로 교체 XPath를 사용하여 : 그것은 속성을 조작 또는 작동 : 실제로 토큰을 업데이트 할 XMLModifier를 사용

// input 
<html> 
    ... 
    <style type=""> 
     background: yellow; 
    </style> 
    <link href="path" /> 
</html> 


// output 
<html> 
    ... 
    <link href="pathToFileWithBackground" /> 
    <link href="path_other" /> 
</html> 

(] 방법을 updateToken 사용) 요소의 텍스트 (본문).

스타일 요소에 문제가 있습니다. 본문을 처리 한 다음 전체 요소를 일부 파일에 대한 링크로 바꾸고 싶습니다.

분명히 텍스트 토큰을 업데이트하면 내부에 링크 태그가있는 스타일 토큰이됩니다.

<style type=""><link href="path" /> 
    </style> 

그래서 스타일 소자 네비게이터 이동 시도 I는 스타일 요소 전에 링크 부재를 삽입하고 제거하는 노력이

<<link href="path" /> type=""> 
     background: yellow; 
    </style> 

가지고 있지만 ModifyException는 ("잘못된 삽입/삭제 조건 사이 검출있어 offset .. and offset ")을 수정 자의 데이터를 저장하려고 할 때 XMLModifier에서 가져옵니다. 여기에 같은 예외

답변

3

확인에 대한 아이디어 (오프셋 INT, INT의 lengtt) 내가 제거 (긴 L)를 사용하여 제거하는 노력이

 ap.selectXPath("//style/text()); 
     vn.toElement(VTDNav.PARENT);     
     modifier.insertBeforeElement(replaceString); 
     modifier.remove();             

의 코드 버전입니다 만 가지고 이렇게 문제는

vn.getElementFragment() 

길이가 잘못되었습니다. 스타일 요소 (내 테스트 파일에) 주석과 주석 문자 뒤를이었다 어쩌면 때문에 포함되었다하고

int o = (int)vn.getElementFragment(); 
int l = (int)(vn.getElementFragment() >> 32); 
final String s = new String(vn.getXML().getBytes(o, l)); 
l = s.substring(0, s.indexOf("</style>")+8).length(); // ;] 
modifier.removeContent(o, l); 
modifier.insertBeforeElement(replaceString); 

그것이

+0

할 수있는 사람이 도움이되기를 바랍니다이 고정 모든 것을 할 수 있어야하는 것보다 길이가 더 크다 문제를 해결하는 데 도움이되는 테스트 파일을 보내주십시오. –

관련 문제