2014-01-15 34 views
0

有沒有一種快速的方法來生成一個xml文檔的「骨架」?我不知道怎麼回事,這麼說,但這裏是什麼,我需要一個例子...尋找只返回我的XML的骨架

說我有這個(可能形成嚴重)的XML文檔...

<ImATag> 
    <SoAmI> 
      *some random data...* 
      <OneMore> 
       *some more random data...* 
      </OneMore> 
    </SoAmI> 
</ImATag> 

我想要返回這個...

<ImATag> 
    <SoAmI> 
      <OneMore> 
      </OneMore> 
    </SoAmI> 
</ImATag> 

有沒有一個快速的方法呢?程序,網站等?我的文檔有幾千頁,因此我不能手動完成。我想我真的只想刪除標籤中的所有數據並返回文檔的大綱。

回答

0

我結束了剛剛使用氧氣。這對我有用嗎?

0

XSLT當然會做得相當平凡。 (標識變換加上一個表示「文本節點不產生任何輸出」的變換 - 您尚未明確說明是要丟棄屬性,還是僅僅指定內容,但也可以輕鬆處理。)

或採取標準DOM或SAX示例程序之一,用於解析和重新序列化XML,並對其進行修改以丟棄不需要的文本。在SAX樣本中進行這種更改可能更容易。

0

您需要XSL處理。

以下XSLT將複製的所有節點,除了text()節點:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 
    <xsl:template match="text()"/> 
</xsl:stylesheet> 

你需要一個XSLT處理器太像xsltproc

xsltproc xsl your-xml 

或Java或.NET或mosth任何其他框架與XML解析庫(通常包括XSL轉換函數)。

+0

當我這樣做時,我只得到文本。 O.o – Volearix

+0

使用xsltproc?我將你提供的輸入XML與我的XSLT進行了對比,並獲得了你想要的(骨架)XML。 –

+0

哦,你的XML是否有一個你沒有在示例XML中顯示的名稱空間? –

0

使用Java和SAXParser的,處理DefaultHandler類和

public void startElement(String namecpaceUri, String localName, String qName, Attributes attrs){} 

public void endElement(String namecpaceUri, String localName, String qName){} 

寫你的數據,其中字符串QNAME - 是所有你所需要的。