jason, I am so sorry that I didn't descripe my question clearly.
here is the xml content :
- Code: Select all
<w:p w:rsidR="00B625A1">
<w:pPr>
<w:pStyle w:val="TOC1"></w:pStyle>
<w:tabs>
<w:tab w:val="right" w:leader="dot" w:pos="9174"></w:tab>
</w:tabs>
<w:rPr>
<w:noProof></w:noProof>
<w:sz w:val="21"></w:sz>
</w:rPr>
</w:pPr>
<w:r>
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="begin"></w:fldChar>
</w:r>
<w:r w:rsidRPr="001A0CFA">
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:instrText xml:space="preserve"> </w:instrText>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:instrText>HYPERLINK \l "_Toc229233425"</w:instrText>
</w:r>
<w:r w:rsidRPr="001A0CFA">
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:instrText xml:space="preserve"> </w:instrText>
</w:r>
<w:r>
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="separate"></w:fldChar>
</w:r>
<w:r w:rsidRPr="001A0CFA">
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:t xml:space="preserve">1 </w:t>
</w:r>
<w:r w:rsidRPr="001A0CFA">
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:rFonts w:hint="eastAsia"></w:rFonts>
<w:noProof></w:noProof>
</w:rPr>
<w:t>绪论</w:t>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:tab></w:tab>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="begin"></w:fldChar>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:instrText xml:space="preserve"> PAGEREF _Toc229233425 \h </w:instrText>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="separate"></w:fldChar>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:t>1</w:t>
</w:r>
<w:r>
<w:rPr>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="end"></w:fldChar>
</w:r>
<w:r>
<w:rPr>
<w:rStyle w:val="Hyperlink"></w:rStyle>
<w:noProof></w:noProof>
</w:rPr>
<w:fldChar w:fldCharType="end"></w:fldChar>
</w:r>
</w:p>
I use the following code to get the text:
- Code: Select all
public static String getText(P p) {
StringBuilder result = new StringBuilder();
if (!KKUtils.isEmpty(p)) {
for (Object o : p.getParagraphContent()) {
if (o instanceof org.docx4j.wml.R) {
org.docx4j.wml.R r = (org.docx4j.wml.R) o;
result.append(getRunContentString(r));
} else {
// System.out.println("DocxUtil:
// "+o.getClass().getName());
if (o instanceof javax.xml.bind.JAXBElement) {
// System.out.println(((JAXBElement)
// o).getDeclaredType());
if (((JAXBElement) o).getDeclaredType().getName().equals("org.docx4j.wml.P$Hyperlink")) {
org.docx4j.wml.P.Hyperlink link = (org.docx4j.wml.P.Hyperlink) ((JAXBElement) o).getValue();
for (Object o2 : link.getParagraphContent()) {
if (o2 instanceof org.docx4j.wml.R) {
org.docx4j.wml.R r2 = (org.docx4j.wml.R) o2;
result.append(getRunContentString(r2));
}
}
}
}
}
}
}
// System.out.println(result.toString());
return result.toString();
}
public static String getRunContentString(org.docx4j.wml.R r) {
StringBuilder result = new StringBuilder();
List<Object> runContent = r.getRunContent();
for (Object o2 : runContent) {
if (o2 instanceof javax.xml.bind.JAXBElement) {
// directly to Text.
if (((JAXBElement) o2).getDeclaredType().getName().equals("org.docx4j.wml.Text")) {
org.docx4j.wml.Text t = (org.docx4j.wml.Text) ((JAXBElement) o2).getValue();
result.append(t.getValue());
}
}
}
return result.toString();
}
I got text :
HYPERLINK \l "_Toc229233425" 1 绪论 PAGEREF _Toc229233425 \h 1
what I really want is
1 绪论 1. That is mean org.docx4j.wml.Text would contain the
w:instrText value.
w:instrText is field codes, so I don't want that field codes when I using org.docx4j.wml.Text.getValue().
what should I do ?
Thanks for your reply.