Frage

Ich habe ein Word 2003 -Dokument, das als XML im Wortverarbeitungsformat gespeichert ist. Es enthält nur wenige Platzhalter, die durch einen geeigneten Inhalt dynamisch ersetzt werden. Das Problem ist jedoch, dass das Wort sie scheinbar zufällig in die getrennten Wörter aufteilt. Zum Beispiel anstelle dessen:

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

Ich habe das:

...
<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>
...

Gibt es eine Möglichkeit, ein "sauberes" XML -Dokument mit Word 2003 zu sparen, oder gibt es eine vorhandene Lösung, die die Reinigung durchführen kann?

Ich habe versucht, eine Methode in Java zu programmieren, die getrennte Teile der Platzhalter verkettet wird, aber da die Anzahl der verschiedenen Schneidkombinationen relativ groß ist, ist der Algorithmus dafür weitaus komplexer als eine ursprüngliche Aufgabe, die ich ausführen muss, also ist es so. Problem für sich.

War es hilfreich?

Lösung

Sie können asspotierte. Words verwenden und dies aufrufen:

Document.joinrunswithSameFormating.

http://www.asispsis.com/documentation/.net-components/asips.words-for-

Andere Tipps

Wenn Sie die Kontrolle über die ursprünglichen Wortdokumente haben, können Sie verhindern, dass das Wort RSID einfügt und Grammatik-/Rechtschreibfehler hervorhebt.

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

Wörter werden weiterhin geteilt, wenn Sie beispielsweise den Schriftart Teil durch das Wort ändern.

Hmmm, ich habe ein einfaches+hässliches Stück XSLT, das ich verwendet habe, um WordML wie das von Ihnen gepostete Beispiel zu reinigen. Ich könnte es für docx4j verpflichten, wenn Sie es wollen, aber wie Sie sagen, gibt es verschiedene Kombinationen, die nicht abgedeckt werden würden. Wenn Sie es wollen, posten Sie bitte das Docx4j -Forum.

Ein robusterer Ansatz wäre, den einfachen Text zu extrahieren und den einfachen Text mit dem XML zu beziehen, damit Sie den einfachen Text durchsuchen und von dort in die XML gehen können.

Word 2003 XML ist ungewöhnlich komplex und schwer zu dekodieren. Der Grund, warum Sie mehrere Tags erhalten, ist, dass Word ML Tags generiert, die als Runs (das W: R -Tag) generiert werden. Soweit ich weiß, gibt es keine einfache Möglichkeit, das XML oben zu reinigen. Ich würde empfehlen, HTML anstelle von WordML zu verwenden. Es ist viel einfacher, Ihre Platzhalter durch geeignete Inhalte zu manipulieren und zu ersetzen. Wenn die Kosten kein Ziel sind, verwenden Sie ein Produkt wie Asposes. Es tut alles für Sie und ist einfach zu bedienen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top