2016-07-21 1 views
1

У меня есть AVA программы J что поиск rsidR = «00CA303F» внутри document.xml (распаковали из DOCX).OpenXML сублимационной фиксированный идентификатор для ш: теги

<w:sdtContent> 
<w:r w:rsidR="00CA303F"> 
    <w:rPr> 
     <w:rFonts w:cs="Arial"/> 
     <w:b/> 
     <w:sz w:val="18"/> 
     <w:szCs w:val="18"/> 
     <w:lang w:val="en-US"/> 
    </w:rPr> 
    <w:t>17-Jan-14</w:t> 
</w:r> 
</w:sdtContent> 

Проблема: если я изменить что-то вроде даты в DOCX и после того, как я сохранить файл, это rsidR изменения! и им не удалось найти его в следующий раз в моей программе.

Как я могу его заморозить? или какой другой фиксированный элемент я могу добавить в w: r для поиска после сохранения файла?

Solutions (не работает), что я судимый: Я добавил другие теги (надеясь, что они не изменятся), я судимый, например: вес: rsidRDefault, вес: ид, ш: вал, вес: rsidRPr к этому ш : r, но Word не сможет открыть файл docx после.

ответ

0

Word или формат файла OpenXML не предоставляют прямого способа добавления идентификатора к элементу, который также сохраняется, если документ редактируется.

В качестве обходного пути, вы можете создать стиль символа, который вы затем применить к ходу текста вы заинтересованы в Тогда вы можете искать w:rStyle элемента с правильным стилем символов в w:val атрибута:.

<w:r w:rsidRPr="00E05157"> 
    <w:rPr> 
     <w:rStyle w:val="MyCharacterStyle"/> 
    </w:rPr> 
    <w:t>17-Jan-14</w:t> 
</w:r> 
+0

Первый thx для ответа, я попробовал ваше решение, но после сохранения файла docx весь ваш код был перезаписан тем же кодом, который я написал в своем первом сообщении (я не знаю почему), если вы хотите, чтобы другая часть xml я могу дать вам без проблем. – Diego87

+0

@ Diego87: Если вы примените стиль символа к текстовой части вашего документа и сохраните файл, стиль символа также будет записан в выходной документ, как в моем примере Open XML. –

+0

<ш: sdtContent> <ш: rStyle ш: Val = "HPS" /> <ш: rFonts ш: CS = "Arial" /> <ш: ш SZ: Val = "18" /> <ш: ш szCs: Val = "18" /> <ш: ш языки: Val = "EN-US" /> 17- Jan-14 где ошибка? такая же ваша выборка? Если я сохраню docx, этот код будет перезаписан без w: rStyle (im pretty new with ooxml, sry) – Diego87

0

Должно быть возможно присвоить уникальный идентификатор , содержащийw:sdt (у потомка w:sdtPr/w:id/@w:val). См., Например, документацию docx4java для sdtPr.

Хорошее объяснение rsid и то, как они используются MS Word, находится в What's up with all those rsid's. Во многих приложениях безвредно полностью игнорировать их.

Смежные вопросы