пакетный скрипт или программа на python для редактирования строки в тегах xml - PullRequest
0 голосов
/ 16 ноября 2010

Я ищу программу, которая ищет теги в документе xml и меняет строку между тегами с localhost на manager.Тег может появляться в документе xml несколько раз, и документ имеет определенный путь.Будет ли Python или VBScript наиболее целесообразно для этой проблемы?И кто-нибудь может предоставить шаблон, чтобы я мог начать?Это было бы прекрасно.Спасибо.

Ответы [ 5 ]

2 голосов
/ 16 ноября 2010

Я бы использовал 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 голосов
/ 16 ноября 2010

Вы можете решить эту проблему практически на всех языках, включая Python и Vbscript.

Как бы то ни было, было бы лучше иметь скрипт на python или других языках, которые имеют довольно много библиотек обработки XML.

Если вы просто ищете теги, вы можете использовать Beautifulsoup.

0 голосов
/ 20 ноября 2010

Мне удалось заставить это работать, используя предоставленные решения VBScript. Причины, по которым я раньше не связывался со скриптом Visual Basic, заключались в том, что я не думал, что можно было выполнить этот скрипт удаленно с помощью PsExec. Оказывается, я решил эту проблему также с помощью Server Fault. Если вас интересует, как это работает, cscript.exe является параметром команды PsExec, а файл vbscript служит аргументом cscript. Всем спасибо за помощь!

0 голосов
/ 17 ноября 2010

Вот конкретный VB пример , который делает именно то, что вы просите.Его можно легко преобразовать в VBScript и использовать COM-объект MSXML2.DOMDocument .Un

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

Другой способ сделать это был бы довольно грязным, но он бы работал.Вы можете выполнить простую замену строки, заменив "> localhost <" на "> manager <".включив символы «>» и «<», можно было бы убедиться, что значением узла XML является «localhost».

0 голосов
/ 16 ноября 2010

Использование vbscript или python - это действительно вопрос того, что имеет смысл с учетом среды, в которой вы работаете, систем, над которыми вы работаете, и требований вашей компании / клиента.

Шаблон документа xml может помочь в любом случае, но я бы предпочел Python для непосредственного анализа xml в качестве личного предпочтения.

Некоторые полезные примеры, с которых я начал, можно найти здесь: http://www.xml.com/pub/a/2002/12/11/py-xml.html

Хотя они не решают вашу конкретную проблему, они могут помочь вам начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...