認識 希伯來文 Unicode 的字碼與應用(三)

讓我們繼續延伸【認識 希伯來文 Unicode 的字碼與應用(一)】、【認識 希伯來文 Unicode 的字碼與應用(二)】的內容。

今天,就直接藉由 打字練習 來說明。

讓我們來學習要如何輸入 Shalom 平安 這個希伯來文單字:שָׁלוֹם

首先,就 שָׁלוֹם 這個字的外觀來看,它是由下列文字符號所組成:
image
然而,這些文字符號所對應的字碼數值,分別是:
image

馬上跟你手中的字碼表核對一下!

接下來,在 Excel 環境裡,輸入公式來體現 שָׁלוֹם

image

image

應用相同的方式,你就可以很容易地做出 希伯來文 的文書作業了。

最後,請務必參考【希伯來文初學者的輸入法 @PC】、【希伯來文鍵盤配置圖 @ Win 10】等資料;
好讓你對文字的輸入原理能夠完全融會貫通!

補充:文章中提到的每個 文字符號所對應的字碼數值 ,在 【希伯來文 Google Input Tools】輸入法裡,就是對應到該輸入法對應表的每個圖示。如此使用者就不用去記住每個字符的字碼了。

image  image

認識 希伯來文 Unicode 的字碼與應用(二)

延續【認識 希伯來文 Unicode 的字碼與應用(一)】文章,繼續來認識 希伯來文 & Unicode 的關係。

今天還要借用大家熟悉地 Excel 環境,來做進一步的說明。
首先,若是你還沒下載 希伯來文 Unicode 的三張字碼表,記得先行下載並列印出來,放在身旁好隨時查看。

『希伯來文與 Unicode 』的字碼表可分成三種:

  1. 子音字碼表 [下載]
  2. 母音字碼表 [下載]
  3. 其他標點符號的字碼表 [下載]

Unicode_Consonants_thumb[2]

Unicode_Vowel Points_thumb[5] 

Unicode_Other Points_thumb[2]



我們還是以 Aleph 字母為例子來解說:
Aleph א 它的 Unicode 值 = 1488,這是十進位數值;若是十六進位,就是 5D0。

接下來,請開啟 Excel ,並在儲存格中打入公式 =UNICHAR(1488),看看會有什麼效果!
既然神奇的出現 א 字母。

在 Excel 裡,

  • 十進位 要轉變成 十六進位,可使用公式 =DEC2HEX(十進位數值)
  • 十六進位 要轉變成 十進位,可使用公式 =HEX2DEC(十六進位數值)

所以,假若你要呈現出 א 字母的效果,也可以使用 =UNICHAR( HEX2DEC(“5D0”) ),公式來得到。
補註:公式 =UNICHAR() 需要代入 十進位 的數值。

接下來,做個小測驗!
請試試看,可不可以打出 שׁ
Ans.       =UNICHAR(1513) & UNICHAR(1473)

請試試看,可不可以打出 שָׁ
Ans.       =UNICHAR(1513) & UNICHAR(1473) & UNICHAR(1464)

在這篇文章中,藉由你個人比較熟悉的試算表 Excel 環境,不只學到三個公式:UNICHAR()、DEC2HEX()、HEX2DEC()
也了解到,一個帶有母音符號的希伯來文字母,是如何產生的過程。

當然,這樣的學習並不是要你去記住那個希伯來文字母的 Unicode 編號值;
而是,經由這樣的練習,來知道希伯來文字母是如何產生了。
事實上,若是要以上面介紹的方式來產生希伯來文,似乎也太麻煩、不實際的些。你是不是也有相同的看法呢?

如何得到正確的排版內容?

《LaTeX2e完全学习手册》(第二版) 作者:胡伟

這書可以說是 TeX、LaTeX 的入門書,也是一本資料豐富的參考書。

其中,有一個範例:3-53.tex
經過編譯後,產生的 PDF 結果如下圖示:

image

但正確的排版內容,應該是這樣!

image

要排解這問題,首先來看下源文件的內容:

\documentclass{book}
\usepackage[paperwidth=65mm,paperheight=23.2mm,text={50mm,129mm},left=4pt,top=02pt]{geometry}
\usepackage{fontspec}
\setmainfont{CMU Sans Serif}  
\setmonofont{CMU Typewriter Text} \usepackage[english,russian]{babel} \begin{document} Александр Сергеевич Пушкин\\ \spaceskip=0.34em \texttt{Я вас любил: любовь еще, быть может, В душе моей угасла не совсем; Но пусть она вас больше не тревожит; Я не хочу печалить вас ничем.} \end{document}
這範例有採用到兩個字型:CMU Sans Serif、CMU Typewriter Text
而這兩種字型,並不是平時常用的字型。
經查證後,得知編譯的電腦裡,並沒有安裝這些字型;才造成上面的錯誤結果。
那該如何查證?
電腦字型有沒有被安裝,可以直接查看 C:\Windows\Fonts 目錄,
若某某字型有安裝,就可以在此目錄裡找到該字型的檔案名稱。
image

因為欠缺該字型,只好上網查詢是不是有下載來源;
還好有,它們可以在 https://smartfonts.com/ 找到。
CMU Sans Series https://smartfonts.com/cmu-sans.font
CMU TypeWriter Text https://smartfonts.com/cmu-typewriter-text.font

下載好欠缺的字型後,再將這些字型檔案複製到 C:\Windows\Fonts 目錄,就完成的字型安裝的作業。
接下來,重新編譯該源文件,就可解決問題。


註解:排版字體的類型、種類繁多,常見“縮寫”術語。例如
CM:Computer Modern
LM:Latin Modern
CMU:Computer Modern Unicode

認識 希伯來文 Unicode 的字碼與應用(一)

或許,你可以靈活使用希伯來文來表達、溝通;也許,你是個希伯來文的初學者。
無論你是哪個層級,可能你還沒聽過希伯來文與 Unicode 關係。

今天,就來談談這個話題!
若是你不清楚什麼是 Unicode ,請自行上網找下谷哥大俠,了解一下。

談到『希伯來文與 Unicode 』的關係,實際上就是在講希伯來文的字碼表。
這字碼表約略分成三種:

  1. 子音字碼表 [下載]
  2. 母音字碼表 [下載]
  3. 其他標點符號的字碼表 [下載]

從這些字碼表的內容來看,你可能就會明白;

  • 每一個子音字母,就配置有一個 Unicode 的編號。
    例如:Aleph א 它的 Unicode 值 = 1488,這是十進位數值;若是十六進位,就是 5D0。
  • 同理,母音標點符號也配置一個 Unicode 的編號。
  • 子音表中,有五個標示藍色的字母,就是字尾字母;它們的編碼數值,會比非子尾字母本身的編碼『小』數字 1。


Unicode_Consonants

Unicode_Vowel Points 

Unicode_Other Points


書摘:軟禁(House Arrest)

軟禁

書名:軟禁  House Arrest

作者: 諾亞.葉德林
原文作者: Noa Yedlin
譯者: 謝儀霏、林薇安
出版社:大塊文化
出版日期:2018/01/27
語言:繁體中文
ISBN:9789862138625

國立臺灣文學館:于 2018/02/08 為《軟禁》一書,舉辦新書發表會。http://bit.ly/2HQuGSg

如何產生【字符代碼表】?(二)

學過 TeX、LaTeX 的人,一定知道 TeX、LaTeX 可以使用許多不同的字型,來加以用在排版上。

也因為字體繁多,要如何在系統中讀取到所需要的字型,就需要藉由字體的五項屬性來管控。
那就是:編碼、字族、序列、形狀、字號

若是想要更清楚的知道,字體的長相、外觀樣式,就可以直接查看【字符代碼表】(FontTable)

那哪裡有【字符代碼表】(FontTable) ?
【字符代碼表】除了在 TeX、LaTeX 書籍中可以看到,也可以藉由兩種方式來自行產生:

  1. 自己下 TeX 排版指令。
  2. 使用現成的 TeX 檔案,來編譯產生。


接續上一篇文章【如何產生【字符代碼表】?(一)】,
我們來學習第二種方法:使用現成的 TeX 檔案,來編譯產生。

這個既有現成的檔案,就是 nfssfont.tex。它存放在 MiKTeX \ tex \ latex \ base 目錄中。
假設,我們要抓取下面範例的第三項字體 cmr :OT1、cmr、m、n

  1. 開啟源文件 nfssfont.tex
  2. 使用 PDFLaTeX 進行編譯
  3. 編譯過程中,在編輯區下方的操作視窗中,會顯示提示訊息: \currfontname= ,要使用者輸入 字體檔案名稱。
    不過,一般來說使用者是不太可能知道完整的字體檔案名稱,所以,先按下 Enter
  4. 接續會看到訊息:\encoding= ,要求指定 字體編碼 ;請輸入 OT1,並按下 Enter。
  5. 接續會看到訊息:\family= ,要求指定 字族 ;請輸入 cmr,並按下 Enter。
  6. 接續會看到訊息:\series= ,要求指定 序列 ;請按下 Enter,表示採用默認值:m。
  7. 接續會看到訊息:\shape= ,要求指定 形狀 ;請按下 Enter,表示採用默認值:n。
  8. 接續會看到訊息:\size= ,要求指定 字體大小 ;請按下 Enter,表示採用默認值:10 pt。
  9. 接續會看到訊息:Now type a test command ,要求指定字體的 呈現方式
    這時,方法有二:
    ★ 輸入命令:\table\bye,並按下 Enter;指定產生【字符代碼表】
    ★ 輸入命令:\text\bye,並按下 Enter;用以產生 使用該字體 的排版效果


範例:

編碼                 字族               序列            形狀      

OT1aunclmn
OT1 auncl m n
OT1cmrmn
OT1 cmss m n
OT1 cmtt m n
OT1 fmv m n
OT1 lmr m n
T1 anttc m n
T1 anttc m scit
T1 cmor m n
T1 fjd m n
T1 fmc m n
T1 fwb m n
T1 pxtt bx n
T1 pxtt m n

用程式自動建立 YouTube 播放清單

舉凡基督徒對於【水深之處】想必是早有耳聞,
不過,你知道他們在 YouTube 也有提供一系列的視頻影片嗎?

今天,就藉由創建【水深之處】的視頻播放清單過程,
來展現如何在 YouTube 環境中,利用工具程式的使用,提升做事效能的方法。

首先,先了解【水深之處】目前有哪些類型的視頻?

  • 【以色列生活特輯】- 3
  • 【以色列直播】- 23
  • 【以色列特輯】- 36
  • 【探索以色列】- 60

如上所示,【水深之處】目前四個類型的視頻內容,其中每個類型名稱之後的數字,表示現今的視頻數量。(約計有 122個視頻)

今天,假若你負責此一事務的同工,請問 122個視頻,

  1. 需要先上傳到 YouTube 的時間,是多久?(上傳視頻自動化處理的介紹,容後敘述!)
  2. 將已經上傳好的視頻,加以分類、歸檔,建置成相對應的播放清單,又要花費多少時間?(這就是本文的重點!)

處理作業:

  1. 使用 參考資源 項次1  提及的工具檔案【YouTube播放清單-建置XML.xlsm】
    建立好四個類型的 播放清單建置檔案(*.xml)
  2. 應用創建【播放清單】的工具程式:CreatePlaylist.exe
    在 DOS 命令行,執行 CreatePlaylist.exe 【以色列生活特輯】.xml ,以產生【以色列生活特輯】播放清單。
    同理,分別執行
    ◎ CreatePlaylist.exe 【以色列直播】.xml ,以產生【以色列生活直播】播放清單。
    ◎ CreatePlaylist.exe 【以色列特輯】.xml ,以產生【以色列特輯】播放清單。
    ◎ CreatePlaylist.exe 【探索以色列】.xml ,以產生【探索以色列】播放清單。
    當然,也可以一次性執行。(可參考【播放清單】工具程式(CreatePlaylist.exe) 中的 水深之處.cmd)
  3. 下載【播放清單】工具程式 (CreatePlaylist.exe) 來用吧!http://bit.ly/2HjShr1
    記得:使用前,自己要申請 Google 認證用憑證,並建立好 client_secrets.json;將它和工具程式 (CreatePlaylist.exe) 放在一起。

結論:
就如上面的處理作業描述,要將122 個視頻項目,加以分類並建立成四個播放清單。
請問,若是你用手工操作,需要多少處理時間?
你知道嗎?如果改用創建【播放清單】工具程式來處理只需要 02’ 23.2”。
重點是,當你下完處理指令後,你就可以完全交給電腦來運作,你本人不需要一直待在電腦旁,還可以去處理其他事情。
image

總之,好工具就要好好使用。
若有不明瞭的地方,可郵件聯絡。mailto:pertonchang@gmail.com

參考資源:

  1. 創建產生播放清單的規格檔案 -- XML
  2. C# 讀取 XML 檔案內容的程式實例
  3. Google API & VS.NET C# @2013 – 03
  4. Google API & VS.NET C# @2013 - 04

如何產生【字符代碼表】?(一)

學過 TeX、LaTeX 的人,一定知道 TeX、LaTeX 可以使用許多不同的字型,來加以用在排版上。

也因為字體繁多,要如何在系統中讀取到所需要的字型,就需要藉由字體的五項屬性來管控。
那就是:編碼、字族、序列、形狀、字號

若是想要更清楚的知道,字體的長相、外觀樣式,就可以直接查看【字符代碼表】(FontTable)

那哪裡有【字符代碼表】(FontTable) ?
【字符代碼表】除了在 TeX、LaTeX 書籍中可以看到,也可以藉由兩種方式來自行產生:

  1. 自己下 TeX 排版指令。
  2. 使用現成的 TeX 檔案,來編譯產生。


本文,先介紹第一種方法:自己下 TeX 排版指令

% !Mode:: "TeX:UTF-8:Hard"
% 編譯:XeLaTeX \documentclass[UTF8]{ctexart} \usepackage{fonttable} \begin{document} % 改變這裡的 編碼、字族、序列、形狀 設定值 \xfonttable{OT1}{cmtt}{bx}{n} \end{document}
要產生【字符代碼表】的排版指令不是很長,也容易理解。
其中,
  1. 需要引用 fonttable 巨集套件(宏包)
  2. 取用 \xfonttable 指令,它需要分別指定所需字體的相關【屬性】參數


範例:

編碼                 字族               序列            形狀      

OT1 auncl m n
OT1 cmr m n
OT1 cmss m n
OT1 cmtt m n
OT1 fmv m n
OT1 lmr m n
T1 anttc m n
T1 anttc m scit
T1 cmor m n
T1 fjd m n
T1 fmc m n
T1 fwb m n
T1 pxtt bx n
T1 pxtt m n

【texmf】 是什麽?

學習 TeX 或是 LaTeX 的人,可能會遇到 texmf 這個字詞,它是什麼?

'texmf' 不是個“明確的”目錄名稱,它是指 TeX 分佈的根路徑。通常它會有多個 ‘texmf’ tree.

以 MiKTeX 來說,你可以藉由 MiKTeX's option (Admin) 得知;【開始 -> MiKTeX -> Maintenance -> settings】
使用 CTeX 套件的人,以 MiKTeX 來說,你可以藉由 MiKTeX's option (Admin) 得知;【開始 -> CTeX –> Settings (Admin)】

以上,就是要執行 mo_admin.exe 程式,它被存放在 D:\CTEX\MiKTeX\miktex\bin 目錄裡。


image
記得勾選 Show MiKTeX-maintained root directories,才能看到完整內容。

如何改變 WinEdt 7 預設下,PDF瀏覽器(SumatraPDF)的版本?

在安裝 CTeX 套件環境後,其預設的 PDF瀏覽器(SumatraPDF)的版本,是 V2.0

這一版本還是可以正常運作,瀏覽編譯後的 PDF 檔案。不過,電腦系統有時會提示:PDF 版本較低,建議:更新。

若是你個人認為有需要,就可以下載新的版本來安裝。

當你安裝好新版本程式後,你可能會發現 WinEdt 還是使用【舊版本】的瀏覽器,不是新安裝的版次。

要如何排除此一問題?

Options / Execution Modes / 【PDF Viewer】tag
變更前:

image

變更設定:(新下載、安裝的程式位置!)

image

猶太曆網站:2net

介紹一個記錄詳細地猶太曆網站:http://calendar.2net.co.il/?month=4&year=2018

image

或許,你一看到上面的圖示後,就產生一個念頭:全部都是“希伯來文”,看不懂!
請先不要關閉網頁,因為你還看得懂行事曆裡的 阿拉伯數字。
既然有看得懂的,就先看已經懂得的地方,再來學習一點新知識,擴充自己的帳幕吧。

首先,先看一下網址:http://calendar.2net.co.il/?month=4&year=2018 ,是不是有 2018、4 的數字?
原來,上面圖示的內容是指 2018/04 的行事曆。

接下來,將目光定位到 4/18、4/19這兩天,它們分別是 陣亡將士紀念日 以及 以色列獨立日。
事實上,這兩個節日是被【定義】在 以珥月 的 4號 & 5號。
若是換算這兩天成為西元日期,將會是 2018/04/19 及 2018/04/20。

奇怪!怎麼會差一天? 
這其中的原因,主要是【安息日】的關係。
安息日 是從週五的黃昏、日落起算,而 2018/04/20 剛好是“週五”,所以才需要“提早”一天。

image

上圖中長方形框的內容,分別說明 04/16 (以珥月 1)、04/17 (以珥月 2)、04/18 (以珥月 3)、04/19 (以珥月 4)、04/20 (以珥月 5)
** 你學到 希伯來文 日期 的表示方式 ?

同樣的道理,猶太曆 5778 的聖殿被毀紀念日(埃波月 9)= 2018/07/21 【週六】
也會受 安息日 的影響,“順延” 到 2018/07/22 【週日】。

上述提到的兩個希伯來文單字,你是不是也有學起來?
提早:מוקדם
順延:נדחה

註解:
1. 【希伯來曆】網站,是直接做日期轉換後的記錄,並沒考量“安息日”的影響!http://bit.ly/2J1lfMY
2. 感謝【妥拉坊 (ישיבת טייפה ) Taipei Torah Study Center】鹽光老師的指導。

5778 猶太曆『月份』 - 微牧之歌

猶太曆 5778年裡,十二個月份將會承受什麼恩典?有怎樣的提醒?
請看 微牧之歌 (WeChat ID = lovechristjesus) 是如何解說!

【5778 提斯利月】雙倍豐產開啟https://goo.gl/cPmpUW
【5778 瑪西班月】生命救贖的恩典月份https://goo.gl/C8RTkJ
【5778 基斯流月】要射中靶心的啟示月份https://goo.gl/ViQBhE
【5778 提別月】尋找創造之手,與神同行https://goo.gl/ErTrqz
【5778 細罷特月】在波瀾中看見神的權能https://goo.gl/swFEAu
【5778 亞達月】發現你暗中隱藏的供應https://goo.gl/at1j6a
【5778 尼散月】恩典開始釋放的日子https://goo.gl/jbVDy8
【5778 以珥月】耶穌要賜給你成功的秘密!http://bit.ly/2qE7R9X
【5778 西彎月】
【5778 搭模斯月】
【5778 埃波月】
【5778 以祿月】

First Published:2018/02/22

跨進 TeX、LaTeX 中文排版領域裡!(二)

接續【跨進 TeX、LaTeX 中文排版領域裡!(一)】的文章介紹,
這篇文章要來說明一些:簡體、繁體檔案存檔格式的現象及問題。http://pertonchang.blogspot.tw/2018/04/texlatex.html

因為要跨入 TeX、LaTeX 中文排版領域,所以選用清華大學出版的【LaTeX 2ε 完全學習手冊 by 胡偉】來當教材;
該書的範例眾多,介紹項目之細緻;即便是 TeX、LaTeX 排版領域裡的高手,也合適拿該書來當鎮店之寶使用。

不過,作者的寫作環境是簡體,與繁體有所不同;所以可以看到該書中提供的範例,就有三種存檔格式:

  1. GB2312 (Simplifiled)
  2. ANSI
  3. UTF-8 w/o BOM

這些存檔格式,若是配合 中文 使用,就會產生一些現象:

  1. GB2312 (Simplifiled):中文可呈現,但有簡體字。
  2. ANSI:中文字變成亂碼
  3. UTF-8 w/o BOM:繁體中文可正常呈現。

所以,需要將現有的範例檔案,加以“轉碼”為 UTF-8 w/o BOM

image

image

image

將範例檔案“轉碼”為 UTF-8 w/o BOM 的方法如下:(參考一下就好)
補充:編輯軟體是 Notepad++

image
image

跨進 TeX、LaTeX 中文排版領域裡!(一)

也許你還沒聽過,或是看過 TeX、LaTeX 這些名詞。

不過,沒關係;只要你有文書排版的需求,就可以來認識、學習它。

image  「Latex」的圖片搜尋結果

有人會問,文書排版不是 Word 就可以,還有不少排版軟體可用,為什麼還要學習 TeX、LaTeX ?
這些疑問,請自己找谷歌大神求問!
我們直接切入【話題重點】 。。。

因為 TeX、LaTeX 初期開發是因應國外排版的需要,所以和【中文】排版不相容。
所以,要安裝 【CTeX 中文套裝】,http://www.ctex.org/CategoryCTeXSuite 
點擊網址連結、下載、安裝。
★ 完成排版環境的建置

文本內容的登打,常有中、英文混合情況;若是還要搭配其他語言來呈現,那最好的文本存檔格式就是 UTF-8
★ 建議採用 UTF-8 的文本存檔格式。

安裝好【CTeX 中文套裝】後,內涵兩種文本編輯器:TeXworks、WinEdt
TeXworks:功能比較簡易、輕巧
WinEdt:功能較為複雜
本文主要以介紹 WinEdt 的使用及注意事項,好讓初學者直接跨進 TeX、LaTeX 中文排版領域裡!
★ 排除 中文文字 無法顯示的困擾

直接依照圖示操作即可,

開啟 WinEdt 程式,開啟一個新檔案。
功能表 / Document / Document Settings
系統默認設定:
image 
image image

請務必修改成:
image
image image

補充:Document Mode 的下拉選單,只能選取到 TeX:UTF-8,並沒有 :Hard 字樣,你可以自行輸入。

將下列範例文字,登打到 WinEdt 編輯區中,並以 XeLaTeX 樣式編譯,以 Sumatra PDF 來查看編譯後的排版結果。

\documentclass{book}
\usepackage{ctex}

\begin{document}
你好 - \LaTeX 123
\end{document}

image  image


不過,每次創建新檔案時,就需要做上述的環境設定,似乎是有點麻煩!
針對這個困擾,可以用建立“樣板”檔案的方式來處理。
例如,建立“樣板”檔案 Template.tex

% !Mode:: "TeX:UTF-8:Hard"
\documentclass{book}
\usepackage{ctex}

\begin{document}
你好 - \LaTeX 123               % 排版文本內容
\end{document}

上面的處理要點:新加入一行 WinEdt 看得懂的指令,
只要你在 WinEdt 裡,開啟這個樣板檔案,登打需要排版的資料,再 另存成 其他檔名,
就可以順利編譯、排版出具有 中文 的文書資料。

創建產生播放清單的規格檔案 -- XML

延伸上一篇文章【C# 讀取 XML 檔案內容的程式實例http://pertonchang.blogspot.tw/2018/04/c-xml.html

前文提到,要產生 YouTube 播放清單,藉由程式來自動執行,需要一個界面規格檔案 -- XML。
本文就來說明該如何使用相關的工具程式【YouTube播放清單-建置XML.xlsm】,來產生這個 XML 檔案。

請下載工具檔案【YouTube播放清單-建置XML.xlsm】:https://goo.gl/YWKg1i

下載後,請創建一個新文件夾,好存放此檔案;以及其他建立播放清單有關的工具程式。(後續介紹!)

使用:

  1. 在黃色輸入區塊裡,填入有關播放清單的視頻資料
    編號 0 乃是播放清單的設定區塊,其中一定要指定播放清單的【名稱】
    編號 1 之後的區塊,逐一設定欲放入播放清單內的每個視頻【網址】,視頻名稱則可以省略。
    加入播放清單中的視頻“ 數量 ”,沒有限制。
  2. image

  3. 當播放清單名稱及清單視頻資料設定好後,只要點擊畫面上“右上角”的『產生 XML 檔案』鍵,
    就可以產生 XML 檔案。

    image

PS:此一 XML 產生工具,是由 Excel 來建立成,執行時電腦系統會有安全性的提示,記得【允許巨集執行】。

C# 讀取 XML 檔案內容的程式實例

在處理用程式語言讀取 XML 的過程中,搜尋過一些網路範例;
雖然,有不少範例,卻如無法解決個人的實際需求。
主因是大多數的範例其讀取的 XML 內容,是屬於“正規化”型的資料;也就是 XML 檔案除了根元素外,就是一階式的資料。
而 XML 資料的實際內容如下:

---------------------------------
<?xml version = "1.0" encoding = "UTF-8" ?>
<videos>
     <head>
         <item>0</item>
         <url></url>
         <name>太古歷史</name>
         <description></description>
         <privacy>public</privacy>
     </head>
     <details>
         <detail>
             <item>1</item>
             <url>https://www.youtube.com/watch?v=b75lPfjI4k8</url>
             <name>第一课:完美的世界</name>
             <description></description>
         </detail>
         <detail>
             <item>2</item>
             <url>https://www.youtube.com/watch?v=Vhi-ZrpnNOY</url>
             <name>第二课:失而复得的乐园</name>
             <description></description>
         </detail>
         。。。。。
     </details>
</videos>
-------------------------------
PS:上述 XML 檔案(video.xml)將會在未來幾篇文章中,再次提及。它將被使用在 YouTube 視頻檔案的管理及應用裡!

從 XML 的內容樣式來看,它具有表頭標籤(head)、表身群標籤(details))、表身標籤(detail)等區塊。
程式要負責將表頭的5個元素、將表身『每一個』節點的4個元素值,加以讀出並存放在公用變數中。

  1. 宣告公用變數
  2. 讀取表頭元素值
  3. 讀取表身每一個節點的元素值

程式如下:

================================

static string PlaylistItem;
static string PlaylistURL;
static string PlaylistName;
static string PlaylistDesc;
static string PlaylistPrivacy;
static int XmlDetailsCnt;
static int XmlDetailElements = 4;
static string[] aryDB;      // 程式中,動態定義陣列大小
static string[,] aryXML;    // 程式中,動態定義陣列大小


// 讀取表頭元素值

static void GetXML_Header(string pXML)
{
     XmlDocument doc = new XmlDocument();
     doc.Load(pXML);

    XmlNodeList nodes = doc.DocumentElement.SelectNodes("/videos/head");

    PlaylistItem = nodes[0].SelectSingleNode("item").InnerText;
     PlaylistURL = nodes[0].SelectSingleNode("url").InnerText;
     PlaylistName = nodes[0].SelectSingleNode("name").InnerText;
     PlaylistDesc = nodes[0].SelectSingleNode("description").InnerText;
     PlaylistPrivacy = nodes[0].SelectSingleNode("privacy").InnerText;
}


// 讀取表身每一個節點的元素值

static void GetXML_Details(string pXML)
{
     XmlDocument doc = new XmlDocument();
     doc.Load(pXML);

    XmlNodeList nodes = doc.DocumentElement.SelectNodes("/videos/details/detail");

    XmlDetailsCnt = nodes.Count;
     aryXML = new string[XmlDetailsCnt, XmlDetailElements];
     aryDB = new string[XmlDetailsCnt];

    int i = 0;
     foreach (XmlNode node in nodes)
     {
         aryXML[i, 0] = node.SelectSingleNode("item").InnerText;
         aryXML[i, 1] = node.SelectSingleNode("url").InnerText;
         aryXML[i, 2] = node.SelectSingleNode("name").InnerText;
         aryXML[i, 3] = node.SelectSingleNode("description").InnerText;

        aryDB[i] = PaserVideoID(aryXML[i, 1]);

        i = i + 1;
     }
}

================================