批处理脚本或python程序来编辑xml标记中的字符串

时间:2010-11-16 20:04:55

标签: python xml scripting vbscript batch-file

我希望编写一个程序来搜索xml文档中的标记,并将标记之间的字符串从localhost更改为manager。标签可能会多次出现在xml文档中,并且文档确实有一个明确的路径。 python或vbscript会对这个问题最有意义吗?任何人都可以提供模板,以便我可以开始使用吗?那太好了。感谢。

5 个答案:

答案 0 :(得分:2)

您可以在几乎所有语言中解决此问题,包括Python和Vbscript。

如果使用python或其他具有大量XML处理库的语言编写脚本会更好。

如果您只是在搜索标签,可以使用beautifulsoup。

答案 1 :(得分:2)

我会使用XSLT。您如何调用XSLT取决于您,但libxslt附带xsltproc

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="//sometag">
    <sometag>manager</sometag>
  </xsl:template>
</xsl:stylesheet>

答案 2 :(得分:0)

是否使用vbscript或python实际上是一个问题,考虑到您所处的环境,您正在处理的系统以及您公司/客户的要求。

xml文档模板可能有所帮助,但我倾向于使用Python直接解析xml,作为个人偏好。

我在这里找到了一些有用的示例:http://www.xml.com/pub/a/2002/12/11/py-xml.html

虽然它们没有解决您的具体问题,但它们可能会帮助您入门。

答案 3 :(得分:0)

这是一个特定的VB example,它完全符合您的要求。它可以很容易地转换为VBScript并使用MSXML2.DOMDocument COM对象。未

Dim doc
Dim nlist
Dim node

Set doc = CreateObject("MSXML2.DOMDocument")
doc.setProperty "SelectionLanguage", "XPath"
doc.Load "c:\books.xml"
Set nlist = doc.selectNodes("//book/Title[contains(.,'localhost')]")
MsgBox "Matching Nodes : " & nlist.length

For Each node In nlist
  WScript.Echo node.nodeName & " : " & node.Text
Next

另一种方法是做一种相当肮脏的方式,但它会起作用。您可以执行简单的字符串替换,替换“&gt; localhost&lt;”与“&gt;经理&lt;”。包括“&gt;”和“&lt;”字符,它将确保XML节点值完全是“localhost”。

strXML = "<foo><bar>localhost</bar><bar2>localhost</bar></foo>"
WScript.echo Replace(strXML, ">localhost<", ">manager<")

答案 4 :(得分:0)

我能够通过使用提供的vbscript解决方案来实现这一点。之前我没有提交过Visual Basic脚本的原因是我认为用PsExec远程执行这个脚本是不可能的。事实证明我在服务器故障的帮助下也解决了这个问题。如果你对它是如何工作感兴趣的,cscript.exe是PsExec的命令参数,vbscript文件作为cscript的参数。感谢大家的帮助!