Пакетный файл для извлечения значения определенного тега XML - PullRequest
1 голос
/ 21 ноября 2011

** Мне нужен командный файл, который извлекает только значение тега Data (без имени тега) и записывает его в текстовый файл. Этот файл может иметь больше тегов XML, чем перечисленные.

Таким образом, вывод должен быть:

Прирост капитала является ключевым компонентом неравенства доходов в США - и сила, стоящая за победителем, берет на себя все мантры нашей экономической системы. Если вы хотите получить равные доходы в США, вам нужно поднять 15% налог на прирост капитала. **

Мой файл выглядит так: **

<TABLE>
Table 30
<ROW>
Multiple Rows
<DATA>
Capital gains are the key ingredient of income disparity in the US-- and the force  
behind the winner takes all mantra of our economic system. If you want  even out 
earning power in the U.S, you have to raise the 15% capital gains tax.
</DATA>
</ROW>
</TABLE>

1 Ответ

1 голос
/ 22 ноября 2011

У меня нет машины с Windows, поэтому простите, если синтаксис немного отключен, но что-то вроде этого может помочь, если данные такие же, как вы перечислили в своем примере, хотя вы можете рассмотреть возможность использования Powershell, так каку него есть отличные инструменты для работы с XML:

setlocal enabledelayedexpansion
set start_reading="0"
set stop_reading="0"
set your_file_name=%~1

if EXIST "%your_file_name%.txt" del "%your_file_name%.txt"

for /f "eol=; tokens=1 delims=" %%c in ('type "%your_file_name_here%.xml"') do (
  set line=%%c

  @REM Determine if at start of Data Tag
  for /f "eol=; tokens=1 delims=" %%d in ('echo !line! ^| findstr /i /c:"<DATA>"') do (
    set start_reading="1"
  )

  @REM Determine if at end of Data Tag
  for /f "eol=; tokens=1 delims=" %%d in ('echo !line! ^| findstr /i /c:"</DATA>"') do (
    set stop_reading="1"
  )

  @REM stop reading DATA tag input
  if "!stop_reading!"=="1" (
    set start_reading="0"
  )

  @REM skips first line assumed to be <DATA>
  if "!start_reading!"=="2" (
    echo !line! >> "%your_file_name_here%.txt"
  )

  @REM Ready to start reading post <DATA> line
  if "!start_reading!"=="1" (
    set stop_reading="0"
    set start_reading="2"
  )

)

@REM Check results
type "%your_file_name_here%.txt"

Дайте мне знать, если вам нужна помощь.Мне приходилось работать в среде, где DOS был единственным, что нам позволяли использовать, поэтому я чувствую вашу боль.Удачи!:)

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