Я пытаюсь проанализировать XML-файлы и создать CSV определенных значений. Ниже приведен пример XML-файл:. http://forecast.weather.gov/MapClick.php?lat=31.7815&lon=-84.3711&FcstType=digitalDWMLXMLStarlet: объединить значения узлов от разных родителей на основе позиционного индекса
Файл XML имеет два различных типа узлов, что я заинтересован в
- В
start-valid-time
узлы (//start-valid-time
) coverage
атрибутvalue
узлов, которые дон 't имеет атрибутadditional
(//weather-conditions/value[not(@additive)]/@coverage
).
Узлы связаны не гнездом, а положением. Первый узел start-valid-time
соответствует первому атрибуту //weather-conditions/value[[email protected])]/@coverage
.
Я хотел бы вывести start-valid-time
, а затем запятую, а затем соответствующий атрибут coverage
.
2015-03-11T14:00:00-04:00, chance 2015-03-11T15:00:00-04:00, chance ... 2015-03-12T03:00:00-04:00, slight chance
, которые я пытался различные xmlstarlet
команды безрезультатно.
Вот один:
xmlstarlet sel -T -t -m "//weather-conditions/value[not(@additive)]" -v "//start-valid-time" -v "@coverage" -n XML
Возможно, я ближе с этой командой:
xmlstarlet sel -T -t -m "//start-valid-time" -v "concat(current(),',',//weather-conditions[count(preceding-sibling::start-valid-time)+1]/value/@coverage)" -n XML
Однако значения атрибута coverage
, кажется, все будет от его первой инстанции.
Буду признателен за помощь в этом!
Эта ссылка никуда не ведет, если я не ошибаюсь. –
Нечетный - он работал секунду назад. Я обновил его. Теперь он работает снова. –