2011-07-29 6 views
2

문서 생성 시스템에서 우리는 프로그램 적으로 병합 필드를 채우는 DOCX 파일을 사용합니다. 이를 위해 OpenXml SDK 2.0을 사용하고 있습니다.DOCX 파일의 병합 필드에 비정상적인 XML 표기법이 있습니다.

나는 docx에서 document.xml 파일을 살펴보고 mergefields가 일반적으로 SimpleField로 표시된다는 것을 알았습니다. 문서의 예는 우리가 사용하십시오 MERGEFIELD 명령과 텍스트를 포함

<w:fldSimple w:instr=" MERGEFIELD NP021_INSSNumber \* MERGEFORMAT "><w:r><w:rPr><w:noProof/></w:rPr><w:t>«NP021_INSSNumber»</w:t></w:r></w:fldSimple> 

매우 간단 표기는 문서에 표시 할 수 있습니다. XML에서이 태그를 찾는 것이 매우 쉽습니다. w : fldSimple 태그 만 검색하면됩니다. 우리의 코드를 분석하지 않았다

을하지만 최근 Word에서 만든 문서 (나는 그것이 더 쉽게 읽을 수 있도록 몇 가지 스타일 태그를 제거), 그리고 내가 XML에서 보았을 때 mergefields에 대한 표기는 완전히 달랐다 :

<w:instrText xml:space="preserve"> MERGEFIELD NP021_INSSNumber \* MERGEFORMAT </w:instrText> 

문서에서 나는 표시 표기법을 찾았습니다. <w:t>«NP021_INSSNumber»</w:t> 이것은 코드에서 구문 분석이 불가능합니다.

Word에서 동일한 작업을 수행 할 때 다른 결과가 발생할 수 있으며 Word에서 SimpleFields를 병합 필드 용 XML 표기법으로 사용하는 방법이 있습니까?

도움이되는 정보를 미리 보내 주셔서 감사합니다.

+0

동일한 문제가 발생하여 RevisionAcceptor를 시도하고 마크 업을 단순화하지 못해 문제를 해결했습니다. 내 병합 필드는 여전히 instrText로 유지되고 fldSimple로 다시 변환되지 않습니다. 다른 사람이 전에 본 적이 있습니까? 이 문제를 어떻게 해결 했습니까? – Lav

답변

2

구문 분석하기 전에 accepting revisionssimplifying the markup으로 생각했습니다.

MarkupSimplifier는 Power Tools for Open XML에 포함되어 있습니다.

Eric Whites blog postings에 더 유용한 자료가 많이 있습니다.

+0

동일한 문제가 발생하여 RevisionAcceptor를 시도하고 마크 업을 단순화해도 문제가 해결되지 않습니다. 내 병합 필드는 여전히 instrText로 유지되고 fldSimple로 다시 변환되지 않습니다. 다른 사람이 전에 본 적이 있습니까? – Lav