0

XML Subversion コミットのログを記録する:

<?xml version="1.0"?>
<log>
<logentry
   revision="2">
<author>20070299</author>
<date>2012-06-06T05:23:21.999470Z</date>
<msg>add part</msg>
</logentry>
<logentry
   revision="1">
<author>20070299</author>
<date>2012-05-22T08:35:55.663875Z</date>
<msg></msg>
</logentry>
</log>

そして、私のサイトのphp-javascriptで、日付と毎日のコミット数でグループ化された配列として結果が必要です。これに似ています:

date[0]=2012-05-22
value[0]=1
date[1]=2012-05-23
value[1]=0
...
date[15]=2012-06-06
value[15]=1

それを行う解決策はありますか?

このリンクを参考にしました

しかし、それは機能せず、結果もエラーログもありません(apache、php)、そしてPHPコードからjavascriptコードに$number[]を送信する方法がわかりません

4

2 に答える 2

0

XPath で遊ぶことができます:

$ xmllint --shell foo.xml

/ > cat //log/*[@revision]/@revision
 -------
 revision="2"
 -------
 revision="1"
/ > cat //log/*[@revision]/date/text()
 -------
2012-06-06T05:23:21.999470Z
 -------
2012-05-22T08:35:55.663875Z
/ > 

これはシェル内にありますが、代わりに好きな言語を使用して XPath 式を反復処理できます。

! XPath に の数値のみを取得するように指示する方法を知っている人がいる場合はrevision="2"、教えてください =)

于 2012-06-06T09:18:09.517 に答える
0

Linux ソリューションを求めていることは承知していますが、ここで提供されたものは何もないため、PowerShell (したがって Windows のみ) を使用して目標を達成する方法です。おそらく、このアルゴリズムを提示することで、別の寄稿者がそれを Linux シェル コマンドにマップすることができます。

([xml](svn log -v --xml)).log.logentry |
Select-Object -Property `
        Author, `
        @{n='Revision'; e={([int]$_.Revision)}}, `
        @{n='Date';     e={Get-Date $_.Date  }}, `
        Paths | 
Group-Object {$_.Date.ToString("yyyy-MM-dd")} | 
Sort-Object name -Descending | 
Select-Object @{n='Date'; e={$_.Name}}, Count | 
Format-Table -AutoSize

PowerShell に精通していなくても、コードが何をしているのか推測できる可能性がありますが、重要なポイントを以下にまとめます。

  • 最初の行は、すべての log/logentry ノードを通る暗黙のループを設定します。
  • 最初のSelect-Objectステートメント (5 行) は、XML 要素と属性を取り出して、それらを PowerShell オブジェクトのフィールドに変換します。Revision と Date は適切な型に変換され、単なる文字列データよりも便利になります。
  • このGroup-Objectステートメントは、現在の真の日付オブジェクトをソートに適した形式に変換します。
  • 2 番目のSelect-Objectステートメントは、デフォルトのグループ名 (name と count) をより適切な名前 (date と count) に変更するだけです。
  • finalFormat-Tableは、結果の列サイズをコンパクトにします。

私のシステムからの出力の一部を次に示します。

Date       Count
----       -----
2012-06-29     4
2012-06-28     6
2012-06-27     8
2012-06-26    16
2012-06-25     1
2012-06-24     1
2012-06-22     5
2012-06-21     8
2012-06-20     8
于 2012-07-03T17:08:21.897 に答える