2012-03-06 61 views
2

我有一個給定的DTD,即DTD解析Java中

<!ELEMENT dblp (article|inproceedings|proceedings)*> 
<!ENTITY % field "author|editor|title|booktitle|pages"> 

<!ELEMENT article  (%field;)*> 
<!ATTLIST article 
        key CDATA #REQUIRED 
        mdate CDATA #IMPLIED 
        publtype CDATA #IMPLIED 
        reviewid CDATA #IMPLIED 
        rating CDATA #IMPLIED 
> 

我需要將其轉換爲XML格式,即

<element> 
    <name>article</name> 
    <attribues> 
     <attr>key</attr> 
     <attr>mdate</attr> 
     ... 
    </attributes> 
</element> 
... 

我寧願不解析DTD自己。我正在尋找一個圖書館,但大多數DOM/SAX庫只處理XML ..我確實發現了NekoDTD,但它幾乎是8yo,並沒有更新...

那麼你建議什麼?

+0

嘗試谷歌搜索 「DTD分析器」 前4次命中是Java中所有開源DTD解析器。 – DwB 2012-03-06 15:11:17

+0

你推薦哪個特定的Java庫?我需要smt,這是公衆MVN回購 – Queequeg 2012-03-07 06:40:50

回答

0

請注意,根據給定的DTD存在無限的有效XML文件。你正在尋找的框架只會產生一個小子集(但它可能就足夠了你的目的:它是什麼,無論如何?)

+1

這應該是一個評論。 – Woot4Moo 2012-03-06 14:34:04

+1

我需要將DTD中的類型定義轉換爲Java Bean更友好的XML表單。注 - 我不需要DTD來驗證任何XML - 我需要它作爲我的應用中的類型定義的基礎 – Queequeg 2012-03-06 14:34:49

1

我需要將類型定義從DTD轉換爲更多的Java Bean 友好的XML表單。

您可以使用JAXB XJC和-dtd標誌工具從DTD生成域模型。

xjc -p blog.log4j -d out -dtd log4j.dtd 

更多信息

+0

我不需要類/實例..我需要生成一個XML文件:-( – Queequeg 2012-03-07 14:27:54

+0

In你對@Mentezza給出的答案的評論,你說你需要一個'Java-Bean友好的XML表單',這個答案描述了你如何生成一個可用於生成所需XML的Java-Bean模型。你在找什麼讓我知道,我會刪除這個答案 – 2012-03-07 14:32:51

+0

運行Xjc可能是一種有用的技術。使用xjc -p tgt -d out -dtd 01-02-16.dtd,其中01-02-16.dtd是完整的UML DTD(略微修改以修復兩個元素上的名稱空間衝突),可以立即生成386個機器可讀的Java文件以供進一步處理。 – 2016-08-12 11:47:43