go解析svn log產生的xml格式的檔案_Golang

來源:互聯網
上載者:User

想用go做一個統計svn代碼提交的工具,類似statsvn。

今天進展到了用go解析svn log產生的xml格式的檔案,在go doc上找了一個Example,已經包括了一些比較典型的解析案例,但是在照葫蘆畫瓢的時候還是遇到了問題,有個paths下有多個path,每個path都有自己的屬性和值,想同時渠道屬性和值,真是費了好大的勁。

先上個svn xml 格式 log 的demo。

Example

<?xml version="1.0"?><log><logentry  revision="43424"><author>fukun</author><date>2015-03-13T11:05:17.341130Z</date><paths><path  kind="file"  action="M">/BigDataPlatform/trunk/application/controllers/Enterpriseajaxapi.php</path><path  kind="file"  action="M">/BigDataPlatform/trunk/application/models/ChartDataFormater.php</path><path  kind="file"  action="M">/BigDataPlatform/trunk/application/controllers/Mediaajaxapi.php</path></paths><msg>抽象出 格式化折線圖的方法</msg></logentry><logentry  revision="43423"><author>zhengjin</author><date>2015-03-13T11:04:50.450051Z</date><paths><path  kind="file"  action="M">/BigDataPlatform/trunk/public/static/js/mapChart.js</path></paths><msg>地圖事件響應</msg></logentry></log>

解析其它的都很順利,但是解析paths這塊的時候遇到了點麻煩。如果 … Paths []Path `xml:”paths”` …,

Example

type Path struct {  Kind string `xml:"kind,attr"`  Action string `xml:"action,attr"`  Path string `xml:"Path"`} 

這樣的話,只能取到一個path的值,但是如果使用 Paths []Path `xml:”paths>path”` ,又只能取到Action和Kind的值,path的value取不到。在stackoverflow上又看了幾個例子,發現有個,chardata的用法,才知道原來指定value還可以這樣用。將Path的struct Path 的xml定義改為 `xml:”,chardata”`,就可以順利的取到value了。

具體的struct就不寫了,如果有需要,可以到我正在開發的GoStatsvn去看看。託管在GitHub。

參考:
跟表示XML相關的資料結構

①type Name struct {
Space, Local string
}
Local表示本地名字,Space表示命名空間首碼(命名空間標示符),該類型沒有提供任何方法,主要用途一般是在XML根項目上定義一個該類型,變數名必須為XMLName,類型就為:xml.Name

②Attr(屬性)、CharData(字元資料)、Comment(注釋)、ProcInst(處理指示)等。這些類型都是XML標準定義的表示,有興趣可以查看XML的標準對照學習。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.