2013-05-16 114 views
0

我們需要創建一個通用XML解析器和規則引擎,它讀取XML文件並將數據存儲在適當的表中。通用XML解析器設計分析

使用案例:

假設我們有Afile1.xml從A

<x> 
    <y>1</y> 
    <z>a</z> 
<x> 

到來,在數據庫的映射,如

Source FileName Field    Path 
A  Afile1 table1.value1  /x/y 
B  Bfile7 table1.value1  /p/q/r 
A  Afile1 table1.value2  /x/z 

我們需要設計一個系統

  • 讀取xml文件Afile1,Bfile 2
  • 從文件中選取值並更新表中的值。

什麼是設計這樣的系統,Perl或Java的最佳平臺。觀察我們需要使用xpath解析大量的xml。 Java中是否有任何框架可以幫助輕鬆構建所需的系統。

謝謝

+0

「最佳」是什麼?要麼可以做到這一點,儘管目前還不清楚你實際需要做什麼。 –

+0

選擇您最熟悉的語言,框架和工具,然後構建它。一旦你運行了,那麼你可以優化它,並試圖找出其他工具是否可以更好地工作。預成熟優化非常有效。 –

+0

只是想了解我應該先看哪裏。我在xml解析方面沒有任何經驗,並且我對Java和perl語言都很滿意。 – akashr

回答

4

恕我直言,最好的辦法是停下來想一想:是否有機會,人們還沒有普遍建立XML解析器?

謝謝第二,二,三......哦,天啊!他們確實已經做到了!

好的,現在我們來看看解析XML的方法。從一些谷歌搜索開始。找到SAX和DOM。閱讀有關它們,但請稍等!不要開始實施您的真實應用程序。看看JAXB。瞭解一點。現在提示:看看@XmlAnyElement。這是您可能需要執行通用XML解析。

好吧,現在您可以將XML文檔轉換爲適當的java對象。下一個階段將對象存儲在數據庫中。這是一個問題:使用哪個數據庫?我真的需要關係型數據庫嗎?提示:你可能不需要。也許你可以使用一個NoSql實現來存儲你的對象。例如MongoDB。

如果您決定使用關係數據庫,請先閱讀JDBC,但不要直接使用它。當你明白它是如何工作的時候,請閱讀JPA並思考如何將它用於你的任務。

享受:)

+0

JAXB似乎很有幫助。但它會幫助我創建通用的XML解析器嗎?我不這麼認爲。如果我使用JAXB,則需要爲每個新的xml文檔創建新的定義,以及與每個新文件對應的新類,dao。這正是我想要避免的。 – akashr

1

如果您創建一個XML解析器(我同意@AlexR,不要),那麼你必須創建一個完全符合一個。僅實現規範一半的「XML解析器」不是XML解析器。這是一種威脅。

問問自己,你是否要執行下列規定:

  • 字符編碼範圍廣編碼的
  • 參數實體
  • 外部的DTD
  • 內部的DTD
  • 一般實體
  • CDATA部分
  • v alidation
  • 獨立
  • 處理指令

和更大量。

如果你不瞭解任何這些,那麼你的解析器將被破壞。好吧,如果你仍然想要這樣做,請閱讀規範。再次閱讀規範。查找OASIS提供的1000多個一致性測試。確保你的解析器符合所有這些。

然後測試它。 alpha,beta。

你忘了命名空間嗎?

只有然後釋放它才能使用。