尝试访问docx文件中的子节点

时间:2017-06-02 13:48:03

标签: java xml docx

我需要使用dom4j解析器访问docx XML文件中的子节点。

我使用以下方法创建了一个节点列表:

 List<Node> nodes = document.selectNodes("/w:document/w:body/w:tbl/w:tr/w:tc");

但是,我不知道如何找到该selectNode组的子节点。 docx文件是一个列表,我正在编辑并尝试更新我们的数据库。

我需要保持这个级别,因为我需要知道数据所在的列。 我需要达到数量

我想让孩子上一级。我需要确定任何列中是否缺少任何数据。

感谢您的帮助 &LT;

w:tc>
    <w:tcPr>
        <w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/>
        <w:tcBorders>
            <w:left w:val="single" w:sz="4"/>
            <w:top w:val="single" w:sz="4"/>
        </w:tcBorders>
        <w:vAlign w:val="top"/>
    </w:tcPr>
    <w:p>
        <w:pPr>
            <w:pStyle w:val="Style2"/>
            <w:framePr w:w="10805" w:wrap="notBeside" w:vAnchor="text" w:hAnchor="text" w:xAlign="center" w:y="1"/>
            <w:widowControl w:val="0"/>
            <w:keepNext w:val="0"/>
            <w:keepLines w:val="0"/>
            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
            <w:bidi w:val="0"/>
            <w:jc w:val="left"/>
            <w:spacing w:before="0" w:after="0" w:line="190" w:lineRule="exact"/>
            <w:ind w:left="200" w:right="0" w:firstLine="0"/>
        </w:pPr>
        <w:r>
            <w:rPr>
                <w:rStyle w:val="CharStyle15"/>
            </w:rPr>
            <w:t>Quantity</w:t>
        </w:r>
    </w:p>
</w:tc>

1 个答案:

答案 0 :(得分:0)

要查找当前上下文节点的子节点,您必须指定'/'不是以for (Iterator iterator = nodes.iterator(); iterator.hasNext();) { Node node = (Node) iterator.next(); node.selectNodes("w:tcPr");//="child::w:tcPr", child is the default axis of location path //The API return child nodes `w:tcPr` } char开头。

w:tcPr/w:shd
  

node.selectNodes(&#34; W:TCPR / W:SHD&#34);

API返回1节点[/ w:document / w:body / w:tbl / w:tr / w:tc / w:tcPr/w:shd];

  

node.selectNodes(&#34; * / W:SHD&#34); //选择大孩子&#34; w:shd&#34;上下文节点

API返回1个节点[w:p/w:shd];如果存在节点w:tcPr/w:shd,则会选择它。

  

node.selectNodes(&#34;自::节点()//瓦特:SHD&#34); //的XPath =&#34;自::节点()/后代或自身::节点()/ W:SHD&#34;

API返回2个节点[w:p/w:pPr/w:shdw:shd];如果存在节点w:tcPr/w:shd,则会选择它。

  

node.selectNodes(&#34; * //瓦特:SHD&#34); //的XPath =&#34;子::节点()/后代或自身::节点()/ W: SHD&#34;

API还会返回2个节点[w:p/w:pPr/w:shdw:shd];但如果节点UINavigationController存在,则 NOT 将被选中。