2009-11-13 3 views
1

WordProcessingML 형식의 XML로 저장된 Word 2003 문서가 있습니다. 여기에는 적절한 내용으로 동적으로 대체 될 몇 개의 자리 표시자가 포함됩니다. 그러나 문제는 워드가 겉으로보기에는 무작위로 분리 된 단어로 그들을 나눕니다. 대신이의 예를 들면 다음과 같습니다MS Word에서 XML 형식의 단어를 분할합니다.

<w:t>${dl.d.out.ecs_rev}</w:t> 

나는이 있습니다

... 
<w:t>${</w:t> 
</w:r> 
<w:r wsp:rsidR="005D11C0"> 
    <w:rPr> 
    <w:sz w:val="20" /> 
    <w:sz-cs w:val="20" /> 
    </w:rPr> 
    <w:t>dl.</w:t> 
</w:r> 
<w:r wsp:rsidRPr="00696324"> 
<w:rPr> 
    <w:sz w:val="20" /> 
    <w:sz-cs w:val="20" /> 
</w:rPr> 
<w:t>d.out.ecs_rev}</w:t> 
... 

은 Word 2003을 사용하여 "깨끗한"XML 문서를 저장하는 방법이 있나요, 또는 할 수있는 기존의 솔루션이 있습니다 청소?

자바에서 삽입 자의 분리 된 부분을 연결하는 프로그램을 만들려고했지만 다른 절단 조합의 수가 비교적 많기 때문에 그 알고리즘은해야 할 원래 작업보다 훨씬 복잡합니다. , 그래서 그것은 스스로 문제입니다.

답변

1

Word 2003 XML은 비정상적으로 복잡하고 디코딩하기가 어렵습니다. Word ML이 runs (w : r 태그)라는 태그를 생성하기 때문에 다중 태그를 얻는 이유가 있습니다. 지금까지 내가 아는 한, 위에서 XML을 정리하는 쉬운 방법은 없다. WordML 대신 HTML을 사용하는 것이 좋습니다. 자리 표시자를 조작하고 적절한 내용으로 바꾸는 것이 더 쉬운 방법입니다. 비용이 목표가 아니라면 Aspose와 같은 제품을 사용하십시오. 그것은 당신을 위해 모든 것을하고 사용하기 간단합니다.

3

원본 Word 문서를 제어 할 수있는 경우 Word에서 rsid 삽입 및 문법 오류/맞춤법 오류 강조 표시를 중지 할 수 있습니다.

  Word.Options opts = Word.Options; 
      opts.CheckGrammarAsYouType = false; 
      opts.CheckGrammarWithSpelling = false; 
      opts.CheckSpellingAsYouType = false; 
      opts.StoreRSIDOnSave = false; 

예를 들어 단어를 통해 글꼴 부분을 변경하면 단어가 계속 나뉩니다.

흠, 내가 게시 한 예와 같이 WordML을 정리하는 데 사용한 xslt의 간단한 + 추한 비트가 있습니다. 당신이 원한다면 나는 docx4j에 그것을 위임 할 수 있습니다. 그러나 여러분이 말했듯이, 다루지 않을 다양한 조합이 있습니다. 어쨌든, 원한다면 docx4j 포럼에 게시하십시오.

일반 텍스트를 추출하고 일반 텍스트를 XML에 연결하면 일반 텍스트를 검색하고 XML에서 그 텍스트로 이동할 수 있습니다.

관련 문제