문제

WordProcessingML 형식으로 XML로 저장된 Word 2003 문서가 있습니다. 여기에는 적절한 콘텐츠로 동적으로 대체 될 자리 표시자가 거의 없습니다. 그러나 문제는 단어가 무작위로 그것들을 별도의 단어로 분할한다는 것입니다. 예를 들어,이 대신 :

<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 문서를 저장할 수있는 방법이 있습니까? 아니면 청소를 수행 할 수있는 기존 솔루션이 있습니까?

자바에서 자리 표시 자의 분리 된 부분을 연결하는 방법을 프로그래밍하려고 시도했지만, 다른 절단 조합의 수는 비교적 크기 때문에 이에 대한 알고리즘은 내가해야 할 원래 작업보다 훨씬 더 복잡합니다. 그 자체로 문제.

도움이 되었습니까?

해결책

aspose.words를 사용할 수 있고 이것을 호출 할 수 있습니다.

document.joinrunswithsameformatting.

http://www.aspose.com/documentation/.net-components/aspose.words-for-.net-and-java/aspose.words.document.joinrunswithsameformatting.html

다른 팁

원래 Word 문서를 제어 할 수있는 경우 Word가 RSID를 삽입하고 문법/철자 오류를 강조하는 것을 중지 할 수 있습니다.

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

예를 들어 글꼴 부분이 단어를 통해 글꼴을 변경하면 단어가 여전히 쪼개집니다.

흠, 나는 당신이 게시 한 예처럼 WordML을 청소하는 데 사용했던 간단한+Ugly 비트의 xslt를 가지고 있습니다. 원한다면 DOCX4J에 최선을 다할 수 있지만, 당신이 말했듯이, 다루지 않을 다양한 조합이 있습니다. 어쨌든 원한다면 Docx4J 포럼에 게시하십시오.

보다 강력한 접근 방식은 일반 텍스트를 추출하고 일반 텍스트를 XML과 관련하여 일반 텍스트를 검색하고 XML로 이동할 수 있습니다.

Word 2003 XML은 비정상적으로 복잡하고 디코딩하기 어렵습니다. 여러 태그를 얻는 이유는 Word ML이 Runs (w : r 태그)라는 태그를 생성하기 때문입니다. 내가 아는 한, 위의 XML을 청소하는 쉬운 방법은 없습니다. WordML 대신 HTML을 사용하는 것이 좋습니다. 자리 표시자를 적절한 콘텐츠로 조작하고 교체하는 것이 더 쉽습니다. 비용이 객관적이지 않은 경우 ASSPER와 같은 제품을 사용하십시오. 그것은 당신을 위해 모든 것을 수행하고 사용하기 간단합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top