2008-10-15 55 views
2

我正在使用Java API和XPath來分析我的XML。我有這樣的XML:用於打印xml塊的XPath條件

<animals> 
    <dog> 
    <looks>dangerous </looks> 
    <bites> hard </bites> 
    <growls> yes </growls> 
    </dog> 
    <cat>nothing special</cat> 
</animals> 

我想一個XPath條件印刷品

<dog> 
    <looks>dangerous </looks> 
    <bites> hard </bites> 
    <growls> yes </growls> 
</dog> 

但我現在不能。如果我使用/animal/dog/text(),它會給出dangerous。但我想這是單獨使用打印文本。有沒有使用XPath條件來獲取XML塊的方法?

編輯

非常感謝您的答覆。欣賞你花在這上面的時間。有沒有辦法在Java中打印內部文本?

這裏是我的XPath條件老話:

public static final String XPATH_INPUT_DATA="//text()"; 

回答

2

如果使用/動物/狗,你會回來的「狗」節點的所有子節點。打印該節點的內部xml應該爲您提供所需的內容。

+0

/動物/狗(與s) – bortzmeyer 2008-10-15 12:27:38

1

rslite的方法的示範,使用命令行工具xpath(用Perl編寫的,但它是標準的Xpath,它應該到處):

% xpath -e /animals/dog animals.xml 
Found 1 nodes in animals.xml: 
-- NODE -- 
<dog> 
    <looks>dangerous </looks> 
    <bites> hard </bites> 
    <growls> yes </growls> 
</dog> 
+0

有沒有辦法在java中做到這一點,而不打印內部文本? – user25458 2008-10-16 04:54:47

1

所有的XPath確實是選擇一個節點。 // text()測試只是選擇文檔中的所有文本節點。這些元素僅作爲元素節點存在於文檔中,而不像您似乎暗示的文本塊。如果您想將這些元素轉換爲文本,那麼您需要在Java級別進行此轉換(通過打印內部文本)。