Тебе вообще не нужно ничего конвертировать. Если вы хотите перетащить данные в набор данных или что-то еще, чтобы вы могли их отобразить, все, что вам нужно, это немного XPath.
XPath для получения всех DOCUMENT
элементов:
//DOCUMENT
И XPath для получения пары value
элементов на основе значения name
на основе DOCUMENT
элемента:
FIELD[name = 'USER']/value
FIELD[name = 'DATE']/value
Таким образом, в зависимости от технологии, которую вы используете для синтаксического анализа XML, вам, в основном, потребуется цикл над первым выражением, а затем выполнить следующие два выражения по результатам первого цикла. В XSL это будет выглядеть примерно так:
<xsl:template match="/">
<xsl:for-each select="//DOCUMENT">
<xsl:value-of select="FIELD[name = 'USER']/value"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="FIELD[name = 'DATE']/value"/>
</xsl:for-each>
</xsl:template>
Как и все, есть несколько способов сделать это. Вы также можете использовать шаблон:
<xsl:template match="/">
<xsl:apply-templates select="//DOCUMENT" />
</xsl:template>
<xsl:template match="DOCUMENT">
<xsl:value-of select="FIELD[name = 'USER']/value"/>
<xsl:text>|</xsl:text>
<xsl:value-of select="FIELD[name = 'DATE']/value"/>
</xsl:template>
Оба из них дадут вывод, который вы дали в качестве примера, но вам, вероятно, лучше прочитать значения XPath непосредственно в набор данных или написать собственный адаптер для извлечения этих значений и загрузки их непосредственно в таблицу данных. 1019 *