測試程式在設計通用library的時候,一般會採用xml作為configuration file。利用xml的樹形結構的優勢,可以提供複雜的輸入引數,test library讀入xml的這些leaf資料後,生成測試的sequence實現測試需求。其優勢如下:
c++有很多庫可以解析xml檔案,一般tinyxml比較常用。但是採用該實現方式的缺點如下:
更合理的實現方式如下:
xsd檔案一般分為以下幾個部分:
- leaf的資料型別定義,這些資料型別會被下面的leaf reference
- element的樹狀結構定義,下圖可以清楚的看到從root開始,一級一級如何伸展的,以及每乙個枝葉的出現次數和資料型別;
具體命令如下,將xsd轉為cxx-tree的*.hpp和 *.cpp。注意因為使用了option --root-element-first, xsd的第乙個element必須是root,否則轉出來的檔案有問題
xsd生成的*.hpp作為include,定義method讀取xml檔案,已經定義private methods去解析樹形結構的每一類枝葉。
讀取xml的code非常簡單, 用root讀取xml檔案,然後用iteration去逐級訪問每個枝葉
如果某個枝是optional的,那麼需要先用present()檢查是否存在,然後再訪問該枝get()
總之採用該實現方式可以保證xml解析的完備性,而且不需要考慮資料型別轉換,因為每個leaf的資料型別已經被class定義好了,只需要直接使用就好了。
希望本文可以幫助有xml解析需求的工程師,正確的使用xsd可以保證code的質量。
如何解析json格式的字串
package com.json import j a.util.arraylist import j a.util.hashmap import j a.util.list import j a.util.map import com.alibaba.fastjson.jsonarray impo...
python如何解析包含不同編碼的字串
問題的描述 有個同學從網上下了乙個資料報,是乙個dat結尾的檔案。讀取出來的時候發現是gb2312的編碼,但是當用gb2312去解碼的時候還是遇到了問題。似乎有個別的位元組解析不了。最後發現是字串中的乙個空格的編碼並不是gb2312。那麼問題來了,怎麼做到正確解析這樣的字串呢?問題的發現 with ...
C 字串轉整型
最近做專案,需要用到字串轉整型,因為字串是有可能任意的,所以轉整型的時候要先對字串進行判斷。網上所用的字串轉整型大概有 atoi 正規表示式,stoi,sscanf等等。atoi 原型 int atoi const char nptr 引數nptr字串,如果第乙個非空格字元存在,是數字或者正負號則開...