У меня есть следующий XML:
<root>
<row>
<elem>Timestamp</elem>
<elem>ERB.CHW.BTU_CV</elem>
<elem>ERB.CHW.BTU1_CV</elem>
<elem>ERB.HW.BTU_CV</elem>
<elem>ERB.HW.BTU1_CV</elem>
<elem>ERB.KW.DEMAND_CV</elem>
<elem>ERB.KWH.MT_CV</elem>
<elem></elem>
</row>
<row>
<elem>2011/09/30 11:21:13.9062</elem>
<elem>2.307609E+09</elem>
<elem>1880067</elem>
<elem>1.068635E+08</elem>
<elem>1340.386</elem>
<elem>448.8</elem>
<elem>1427723</elem>
<elem></elem>
</row>
</root>
Я хочу изменить его так, чтобы первый <row>
определял новые элементы (через <elem>
), а каждый непустой <elem>
, который следует, предоставляет значения - например:
<root>
<row>
<Timestamp>2011/09/30 11:21:13.9062</Timestamp>
<ERB.CHW.BTU_CV>2.307609E+09</ERB.CHW.BTU_CV>
<ERB.CHW.BTU1_CV>1880067</ERB.CHW.BTU1_CV>
<ERB.HW.BTU_CV>1.068635E+08</ERB.HW.BTU_CV>
<ERB.HW.BTU1_CV>1340.386</ERB.HW.BTU1_CV>
<ERB.KW.DEMAND_CV>448.8</ERB.KW.DEMAND_CV>
<ERB.KWH.MT_CV>1427723</ERB.KWH.MT_CV>
</row>
</root>
Обратите внимание на две вещи:
- Обратите внимание, как пустые
<elem>
элементы удаляются из исходной структуры.
- Это должно работать для любого количества
<row>
наборов узлов.
Я чувствую, что это должно быть просто, но я изо всех сил пытаюсь даже понять, с чего начать. Помощь
РЕДАКТИРОВАТЬ: RE: # 2 выше, я не собираюсь дублировать исходный <row>
набор узлов (который используется для определения новых элементов). Скорее, решение должно работать для любого <row>
набора узлов, который содержит точки данных (то есть, если второй <row>
набор узлов был продублирован 5 раз подряд).