2011-04-27 32 views
0

我剛剛通過python DOM API完成了skimming,似乎無法找到我在找的內容。保留XML標籤 - Python DOM實現

我基本上希望在遍歷DOM樹時保留XML標記。這個想法是打印我以後想要轉換成XML文件的標籤名稱和相應的屬性。

<book name="bookname" source="/home/phiri/Book/book.xml" 
     xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <chapter> 
    <page>page1</page> 
    <page>page2</page> 
    </chapter> 
    <chapter> 
    <page>page1</page> 
    <page>page2</page> 
    <page>Page3</page> 
    </chapter> 
</book> 

使用上面的XML內容例如,我想要的是book.xml文件的結果。

<book name="bookname" source="/home/phiri/Book/book.xml" 
     xmlns:xi="http://www.w3.org/2001/XInclude"> 
    <chapter></chapter> 
    <chapter></chapter> 
</book> 

是否有替代的xml包,我可以用它來保存使用python提取內容時得到的結果?

+0

這個問題不是很清楚..它聽起來像你想使用XSLT(樣式錶轉換)。如果你澄清你想要做的事,你會更有可能獲得幫助。 – SteveMc 2011-04-27 14:30:59

+0

@SteveMc:感謝您的回覆。我基本上是試圖把我的XML文檔分成只有兩個級別的小塊。 Book.xml將有書節點和章節點 chapter.xml將有章節點和頁節點 page.xml將只有頁碼文本 我希望有助於澄清事情。 – lightonphiri 2011-04-27 14:35:16

+0

這個想法是最終使用XInclude重新組裝整個文檔。 – lightonphiri 2011-04-27 14:38:36

回答

0

一種簡單的方法來獲取您從輸入中發佈的輸出是覆蓋XSLT identity transform。它看起來像要消除所有文本節點,並有兩個以上的祖先的所有元素,所以你只需要添加空模板對於那些:

<xsl:template match="text()"/> 

<xsl:template match="*[count(ancestor::*) &gt; 2]"/> 

一般在Python中使用XSLT的最佳方式是與libxml2模塊。除非你需要一個純粹的Python解決方案,在這種情況下,你不會使用XSLT,因爲沒有人構建純粹的Python XSLT處理器。

+0

謝謝;我想我必須堅持使用XSLT。 – lightonphiri 2011-04-28 09:45:46