2017-06-02 53 views
1

子節點,我需要幫助使用dom4j的解析器在一個的docx XML文件訪問子節點。試圖訪問的docx文件

我創建使用節點列表:

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

但是,林不知道如何找到selectNode組的子節點。 docx文件是一個列表,我編輯並試圖更新我們的數據庫。

我需要保持在這個水平上,因爲我需要知道數據是哪一列。 我需要去的數量

我想在水平getchild。我需要確定是否有任何數據在任何列中丟失。

感謝你的幫助 <

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> 
+0

可不可以給你解析XML的片段?您必須選擇哪些子節點? – tnas

回答

0

要查找當前上下文節點的子節點,你必須指定RelativeLocationPath其不受'/'字符開始。

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` 
} 

node.selectNodes( 「W:TCPR/W:SHD」);

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

node.selectNodes(「*/w:shd」); //選擇上下文節點的大孩子「w:shd」

API return 1 node [w:tcPr/w:shd];如果節點w:p/w:shd存在,它將被選中。

node.selectNodes(「self :: node()// w:shd」); //的XPath = 「自::節點()/後代或自身::節點()/ W:SHD」

API返回2個節點[w:tcPr/w:shdw:p/w:pPr/w:shd];如果節點w:shd存在,它將被選中。

node.selectNodes( 「* //瓦特:SHD」); //的XPath = 「子::節點()/後代或自身::節點()/ W:SHD」

API還返回2個節點[w:tcPr/w:shdw:p/w:pPr/w:shd];但是如果節點w:shd存在,將會選擇而不是

+0

如何選擇答案? – TYD

+0

你是什麼意思?如果你想獲得文本節點「數量」,你可以調用'node.selectSingleNode(「w:p/w:r/w:t」)。getText()'。 –