获取docx4j中内容控件的标题或别名

时间:2015-08-11 12:41:44

标签: java docx docx4j

我想知道是否有可能获得内容控件的标题。获取标签非常容易,但XML中称为别名的标题无法访问。

当我问课时我得到的意思是“javax.xml.bind.JAXBElement”

这是我想要的xml

<w:sdt>
<w:sdtPr>
<w:rPr>
<w:rStyle w:val="Calibri8"/>
</w:rPr>
<w:alias w:val="The title"/>            <== I want this little guy
<w:tag w:val="RULE["BaseSalary"]"/>
<w:id w:val="51973609"/>
<w:placeholder>
<w:docPart w:val="DefaultPlaceholder_1081868574"/>
</w:placeholder> 

以下是我获取标签的方法:

for (Object alias : al) {   

                    if ( alias.getClass().toString().contains("org.docx4j.wml.Tag")) {

                        //gets the Tag
                        String CTagVal = ((org.docx4j.wml.Tag) alias).getVal();

                        // If the tag contain ....
                        if (CTagVal.contains("RULE") || CTagVal.contains("CAL") )  {  
        ...........................

获取标签真的很容易,因为有一个名为Tag的类,但为什么不存在“别名”类? 但更重要的是有办法获得它吗?要么 ??? Thx提前

1 个答案:

答案 0 :(得分:1)

对于那些想要答案的人来说!

static Alias getAlias(SdtPr element) {

      for (Object o : element.getRPrOrAliasOrLock()) {
       if (o instanceof JAXBElement  && ((JAXBElement)o).getValue() instanceof Alias) {
        return ((JAXBElement<Alias>)o).getValue();
       }
      }
      return null;
     }

                            // for all elements get Tags and title
                            for (Object elem : al) {   


                                org.docx4j.wml.SdtPr.Alias hello = null;


                                if (elem.getClass().toString().contains("avax.xml.bind.JAXBElement") &&
                                        ((javax.xml.bind.JAXBElement) elem).getValue().toString().contains("Alias")) {


                                    hello =  (Alias) ((javax.xml.bind.JAXBElement) elem).getValue();

                                    System.out.println( hello.getVal() );


                                }

                                // tag part much easier

                                else if ( elem.getClass().toString().contains("org.docx4j.wml.Tag")) {

                                    //gets the Tag
                                    String CTagVal = ((org.docx4j.wml.Tag) elem).getVal();
                                                   ..........
                               }
                            }