測試之路3 對比XML檔案2

2021-06-22 07:51:00 字數 2094 閱讀 5182

其實上一次對比xml檔案一直出錯,其實我忽略了乙個很簡單的問題:我從根目錄下得到的所有孩子,是這個根下的,而xml檔案的組織形式如下,孩子也有可能是其他的根:

high

-1 source00

0020

000 lc1

12000

這裡可以把streams當做所有的根,但是它下面有stream,stream下面還有h264和aac兩個節點,h264又有很多節點 ,而h264本身並沒有引數值。

所以我得到的children只是得到stream,我需要遍歷孩子,直到它沒有某個孩子不再有孩子,再返回。

這麼想來,是自己以前學資料結構學的不好,我實際要做的就是遍歷樹的每一片葉子。於是,我開始遍歷整個xml樹了。

可是我該怎麼遍歷,還是像資料結構上說的那樣,先根,中根,後根?其實,我並不需要一起去遍歷兩個xml樹,我只要遍歷乙個xml樹(原始檔),然後去比對目標檔案的xml樹就可以了。因為我發現,這我這裡目標檔案的葉子比原始檔的多;且目標檔案的葉子在一般情況下都包括目標檔案。所以我以原始檔為參照物,去尋找目標檔案是否存在該節點,如果不存在,則錯誤;再去比對引數,如果引數不同,則錯誤。

xml檔案中可能存在名字相同,但是實際位置不同的節點,所以對比的節點必須相對位置也相同,所以這也降低了對比難度。所以我可以簡單寫出對比的測試程式:

//簡單對比方法:

//傳遞引數:原始檔,返回的目標檔案

//返回值:true表示xml對比一樣

//修改日期:2014.5.26 tanlee

//對比策略:如果原始檔有標籤,尋找目標檔案是否有對應標籤,個數如果不相同

public boolean ******compare(document sourcedoc,document targetdoc)

else if(ssvalue == null && tvalue == null)

}if(j == length2) //到達迴圈次數,還是沒有找到,說明沒有值對應,可以返回錯誤}}

else if(length1 == length2) //長度相同的情況下,進行對比,對比的條件是,如果目標檔案能找到且值相同則返回true

else

break;

}ssvalue = sourcedoc.getelementsbytagname(sname).item(i).getfirstchild().getnodevalue();

tvalue = targetdoc.getelementsbytagname(sname).item(i).getfirstchild().getnodevalue();

if(ssvalue != null&&!ssvalue.equals(tvalue))//表示找不到

else }}

else

}return true;

}

不過,返回的結果都是false,這讓我驚呆了,難道是我又寫錯了?我只能把遍歷到的節點輸出來,果真節點都不在,這是什麼原因?

老大這個時候提醒了我,解析xml的時候需要把xml檔案進行格式化,我把原始檔和目標檔案匯出來看一看,乙個是3kb,另乙個是5kb,很顯然就算某些元素資訊有差別,檔案大小也不會相差如此之大,所以我開啟看了一下:原始檔沒有空格和回車,而目標檔案有很多空格和回車,我於是理解他們的格式是不一樣的。

需要自己去標準化嗎?好像不用了,裡面已經寫好了方法。是用正則,我不是很懂,至少用了再去學吧,**如下:

//標準化傳入的xml檔案的字串

//傳遞引數:原始檔的string,返回的true

//返回值:修改過的string

//修改日期:2014.5.29 tanlee

public string standardxml(string xml)

這樣就基本實現了功能,終於能返回一些true了,通過人工對比發現自己的自動化測試程式雖然簡單,但還是能實現功能的。

但是,問題又來了,怎麼給自己的原始檔新增新的標籤,以適應伺服器那邊增加的引數?看來改進的地方還很多,只能下次再改了。

測試之路3 對照XML檔案2

high 1 source00 0020 000 lc1 12000 這裡能夠把streams當做全部的根,可是它以下有stream,stream以下還有h264和aac兩個節點,h264又有非常多節點 而h264本身並沒有引數值。所以我得到的children僅僅是得到stream,我須要遍歷孩子,...

Tomcat6 Tomcat7對比測試

本文首先簡述了tomcat7的新特性和增強功能。然後對比tomcat6做了效能測試,測試結果表明,tomcat7的在效能上沒有明顯的提公升,而主要貢獻在於servlet 3.0,記憶體檢測洩露和增強的安全特性。目前tomcat7已經發布到第34個版本 tomcat7.0.34 而tomcat6現在的...

阿里MNS OSS 和亞馬遜 SQS S3對比

主要是阿里雲和亞馬遜對比,其他的廠家略微提一下。主要是對比的雲儲存 訊息佇列服務 1.阿里oss vs亞馬遜 s3雲儲存 a.介面對比 阿里雲 和亞馬遜介面差不多 基本引數 endpoint 儲存節點 accesskeyid 賬戶key accesskeysecret 賬戶秘鑰 bucketname...