XML檔案匯入,轉化,初步處理

2022-03-24 05:22:40 字數 1945 閱讀 4537

前天幫同學寫作業,順便簡單了解了下xml的一些東西,用的是c#做xml的處理。當然,學的時候只是為了滿足使用,不免有些偏頗,不夠全面,權當是在這裡做個筆記吧。

幫朋友做的東西主要是完成這樣的功能:從指定的目錄中選定xml文件,然後把其中的樹形結構提取出來,把每條邊的資訊存在指定的表中。每個xml被轉換為一張表。前面的都是些準備工作,後面是在轉換好的表上,做不同表之間的相似度分析。ps:朋友做資料探勘的,剛入門……

分幾個模組來說吧:

一、xml文件的匯入

xml的匯入分兩種dom和sax。前者是直接在記憶體裡把xml文件中的樹搬過來,後者則是動態處理。由於處理的文件不是很大,直接使用了dom來做。

xmledge

class

xmledge

public

xmledge()

public

string

getedge()

public

void

setfather(xmlnode f)

public

void

setchild(xmlnode c)

xml文件提取

1class

xmlobject213

14public

void

transform(xmlnode xnode)

1525}26

}27}28

29public

void

gettargetlist()

3035}36

37public

void

displayedges()

3843}44

4546

public

string

getallinfo()

4753

return

allinfo;54}

5556

public

list

<

xmledge

>

getedgelist()

5760

}xmledge是xml中樹上的一條邊,標記了父節點和子節點。

使用xmlobject類,裡面包裝乙個xml文件物件,以及乙個儲存xml文件中的邊的list。最後,xml文件物件的所有邊會存在list中。

核心的是transform方法,利用c#中的類庫,遞迴地把所有的邊記錄下來。

二、提取資訊的處理

簡單的相似度分析,用乙個二維陣列來記錄每個各個文件之間的相似度。建立乙個公共的xmledge的表edgeinfo,對於乙個xmlobject新轉化成的表,和edgeinfo一起掃瞄,如果包含edgeinfo中沒有的xmledge,將該條邊新增到edgeinfo中,並將二維陣列中的對應位置置1,如果該條邊已經在edgeinfo中,則在對應的二維陣列的位置加一。最後將二維資料記錄的結果輸出。

scanedge

class

scanedges

public

void

initarray()

for(

inti =0

; i 

<

100; i++)

}public

void

scan()}if

(jump 

==false)}

j++;}

docnum =j;

}public

string

display()

result +="

\r\n";

}return

result;

}public

void

clear ()

}最後貼個簡單的例子吧

xml 檔案轉化Dictionary

下面是xml檔案 國土局 市局國土資源局 330 受理 telephone 88205156 萍,倩友37001 10080100030 4e58a6f1 縣國土資源局 3321 受理 telephone 13819655058 晨輝123 00100033 204cdd0b 獲得受理資訊 市縣編碼...

xml檔案轉化為datatable

asp.net 新建xml檔案,程式碼如附件 annie female 25 tom male 28 lily female 22後台寫轉換方法 private static datatable xmltodatatable string xml foreach xmlnode xx in doc....

xml 檔案處理

字串專為xml類 xdocument xmldocument xdocument.parse xmlcontent 子代string tablaname xmldocument.descendants tablename elementat 0 value.tostring string tabla...