1

Я использую Notepad++ и пытаюсь заменить все числовые строки в определенном теге (xxxx моего XML-документа новой строкой, которая была изменена определенной переменной. Вот пример:

<start>501234</start>

раунд (501234 * 0,9) = 451111

<start>451111</start>

Есть ли способ автоматически найти все числовые значения в начальном теге и заменить его тем же значением, умноженным на 0,9? Мне не нужно использовать Notepad++, если есть другой инструмент, который может это сделать.

Спасибо!

3 ответа3

1

используйте xslt для изменения файла input.xml:

<bla>
     <start>501234</start>
     <end>12345</end>
</bla>

и вы хотите умножить число между start тегами на 0.9 , а затем создать "файл преобразования" (transform.xsl):

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>

<!-- copy everything else -->
<xsl:template match="node()|@*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<!-- transform what we are interested in -->
<xsl:template match="start">
    <foo><xsl:value-of select="number(.) * 0.9" /></foo>
</xsl:template>
</xsl:stylesheet>

и примените это так:

% xsltproc transform.xsl input.xml
0

Очень простое решение - написать скрипт (возможно, perl) для поиска и замены вашей переменной. эта строка соответствует всему между двумя переменными тега] > (.?). В Perl вы можете просто умножить результат этого регулярного выражения на .9 и переписать ответ. Я часто занимаюсь обновлением больших XML-файлов, и Perl на сегодняшний день является самым простым решением любой из моих проблем.

0

Если у вас есть незначительные знания о программировании, вы можете написать свой очень легко. Вы можете использовать объект XPathNavigator для синтаксического анализа XML с комбинацией C # или VB для такой задачи, что вы не должны тратить больше получаса.

Начните свой собственный проект с некоторых бесплатных версий Visual Sudio и пришли на Stackoverflow.com с вашими проблемами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .