如何编写Python或PHP脚本来编辑这个XML文件?

0 投票
4 回答
2296 浏览
提问于 2025-04-16 10:29

我想写一个脚本,用来编辑多个XML文件。这个脚本需要完成以下几件事:

  • 找到标签“Preload”,删除整个标签;如果有“Preload=?sometext?”,也要删除。
  • 找到标签“jumpable”,删除整个标签;如果有“jumpable=?sometext?”,也要删除。
  • 找到“tween”,删除整个标签。
  • 把“slide”替换成“title”,然后删除这一行。
  • 找到“offsety”,删除整个标签。
  • 找到“offsetx”,删除整个标签。
  • 找到“titleoffsetx”,删除整个标签。
  • 找到“presenter”,删除整个标签。
  • 找到“controls”,删除整个标签。
  • 找到“demooffsetx”和“demooffsety”,删除整个标签。
  • 把“flv”替换成“src”,但如果是“.flv”就不替换。
  • 删除类型标签,比如“type=?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>

4 个回答

0

看看PHP的SimpleXML这个工具。你可以在这里找到相关的例子:http://www.php.net/manual/en/simplexml.examples-basic.php
当然,这并不是你唯一的选择。只要在网上搜索“PHP XML解析器”或者“Python XML解析器”,你会找到很多可以使用的资源和库。

0

你有没有考虑过用XQuery来转换你的xml数据呢?XQuery是一种用来处理xml数据的语言。在我看来,使用XQuery脚本是解决你问题的最佳方法。XQuery你只需要一个XQuery引擎来执行你的脚本,这样就可以把输入的xml转换成你想要的输出(比如这个:MXQuery

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脚本应该能输出你想要的结果。

撰写回答