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