用C 實現乙個XML parser的必要工作。

2021-03-31 20:08:58 字數 507 閱讀 2823

考慮乙個完整的xml parser一般由幾部分組成:

必要元件:

1. dom 介面定義,以及dom model的實現。

2. 乙個xml詞法分析器,用於將xml字元流轉換成token流。

3. 乙個xml parser,將token流組織成dom model.

4. 一套在dom node中遍歷的資料結構和演算法,nodeiterator,treewalker.

5. 乙個dtd的詞法分析器和dtd parser.

6. 乙個xpath表示式語言的編譯器,將xpath表示式編譯成ast樹。

7. 乙個xpath引擎,根據xpath ast對dom 樹執行運算。

8. 乙個xslt引擎,完成xslt的transform。

9. 如果需要支援xhtml,那麼css parser也是必須的。

輔助元件:

1. 記憶體管理機制。

2. 支援各種編碼和網路環境的file reader.

3. ***封裝。

用 C 實現乙個變長陣列

我想用 c 的人都用過 std vector 它是乙個可變長的陣列,在很多時候都比 c 固有的定長陣列要靈活。c 裡沒有這樣的標準化設施,但是寫軟體的人通常都會實現乙個。正所謂,不厭其煩的重造輪子 d 這裡我們不討論造輪子的好壞問題,直接討論下實現這麼個東西的一點小技巧吧。總是固執於用誰做的輪子的問...

用C 實現乙個日期類

最近在複習c 的時候發現日期類是乙個非常有用的類,在現實中是非常實用的 雖然我不知道為什麼這麼實用的類,庫里沒有 以下是我自己實現的日期類的 因為大部分都是運算子的過載,所以理解起來應該並不難 include include using namespace std class date date c...

C 用兩個棧實現乙個佇列

之前總結面經,看到了這樣乙個面試題 c 用兩個棧模擬實現乙個佇列。看到這個問題,相信很多人都是在心裡鄙視面試官,這是人問的問題嗎?不但要寫棧,還要用棧實現乙個佇列,這 量也忒大了吧!如果你第一反應也和上面一樣,那說明你的c 功底還是有些薄弱,為什麼一定要自己寫呢,人家面試官有沒有強調說要讓你寫乙個棧...