2011-01-24 73 views
0

我想寫一個腳本,它將編輯多個XML文件,我想有一個腳本,將執行以下操作;如何編寫Python或PHP腳本來編輯這個XML文件?

  • 查找標籤「Preload」刪除整個 標籤,找到「Preload =?sometext?」並刪除。
  • 查找標籤「jumpable」刪除整個 標籤,找到「jumpable =?sometext?」並刪除。
  • 查找「吐溫」,並刪除整個標籤
  • 替換「幻燈片」與「標題」,刪除此行
  • 查找「OFFSETY」,並刪除整個 標籤
  • 查找「OFFSETX」,並刪除整個 標籤
  • 查找「titleoffsetx」,並刪除 整個標籤
  • 查找「主持人」,並刪除整個 標籤
  • 查找「控制」,並刪除整個 標記
  • 查找「demooffsetx」和「demooffsety」 並刪除整個標記。
  • 將「flv」替換爲「src」,除非它是「.flv」
  • 刪除類型標記,例如。 「類型=?sometext?」

腳本之前:

<?xml version="1.0" encoding="utf-8"?> 
    <presentation> 
     <lesson> 
     <part src="0301p.flv" breadcrumb="This is example text1"> 
      <cuepoints> 
      <cuepoint time="0:01" preload="priority" tooltip="Demo 3.1(A)" jumpable="yes"> 
       <tween mode="instant" time="1" /> 
       <slide flv="demos/0301d1.flv" demooffsetx="-180" demooffsety="60" type="demo"></slide> 
       <presenter /> 
       <controls /> 
      </cuepoint> 
      </cuepoints> 
     </part> 
     </lesson> 
    </presentation> 

後腳本:

<?xml version="1.0" encoding="utf-8"?> 
<presentation> 
    <lesson> 
    <part src="0301p.flv" breadcrumb="This is example text1"> 
     <cuepoints> 
     <cuepoint time="0:01" tooltip="Demo 3.1(A)"> 
      <title src="demos/0301d1.flv"></title> 
     </cuepoint> 
     </cuepoints> 
    </part> 
    </lesson> 
</presentation> 
+0

我沒有看到你的「之前」部分。 – 2011-01-24 01:24:30

+2

你試過了嗎?你究竟在哪裏遇到困難? – 2011-01-24 01:24:52

+0

Stephen Chu,我剛剛編輯了問題以顯示「before」部分。 – Josh 2011-01-24 01:27:54

回答

0
#!/usr/bin/python 

import re 

filename = 'editme.txt' #name of the file you want to edit 

def edit(filename): 
    f = open(filename, 'rU') #reads your file 
    text = f.read() #puts everything in file into a string under var text 
    f.close() #closes file 
    text = re.sub(r'\s[Pp]reload="\w+"', '', text) #delete preload tag 
    text = re.sub(r'\s[Jj]umpable="\w+"', '', text) #delete jumpable tag 
    text = re.sub(r'<tween.+>\s+', '', text) #delete tween tag 
    text = re.sub(r'slide', 'title', text) #replaces slide with title tag 
    text = re.sub(r'\s\w+offset\w+=".+"', '', text) #delete offset/type tags 
    text = re.sub(r'<presenter.+>\s+', '', text) #deletes presenter tag 
    text = re.sub(r'\s+<controls.+>', '', text) #deletes controls tag 
    text = re.sub(r'<title flv', '<title src', text) #replaces flv with src in title tag 
    f = open(filename, 'w') 
    f.write(text) #replaces all text in file with the edited text 
    f.close() 

edit(filename) 

這個簡單的python腳本應該輸出你想要的。

0

您是否考慮過使用XQuery來轉換您的xml數據? XQuery是一種用於xml轉換的語言。在我看來,使用XQuery腳本將是解決問題的最佳方法。 XQuery 你只需要一個XQuery引擎執行的腳本,將輸入XML轉換成輸出(像這樣的:MXQuery

0

我建議基於Python的解決方案與lxml。恕我直言,它的最佳選擇,因爲它的功能非常豐富,允許XPath,etree或objectify,簡單的字符串解析和tostring轉換等。

PHP根本無法爲您提供等效的工具集。