MS Word는 단어를 XML 형식으로 나눕니다
문제
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.
다른 팁
원래 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와 같은 제품을 사용하십시오. 그것은 당신을 위해 모든 것을 수행하고 사용하기 간단합니다.