Вы можете использовать XSLT из Java, чтобы получить желаемый результат. Для этого создайте следующие файлы:
Назовите ваш входной файл 'input.xml':
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>Name</name>
<lastName>LastName</lastName>
</person>
Создать файл transform.xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="/person">
<xsl:for-each select="*">
<xsl:value-of select="concat(name(),': position ',position()-1)" />
<xsl:if test="position() != last()">, </xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
И использовать файл Java из этого SO ответа :
import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
public class TestMain {
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(new File("transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new File("input.xml"));
transformer.transform(text, new StreamResult(new File("output.text")));
}
}
Затем выполните код Java (т.е. вот так):
javac TestMain.java
java TestMain
Теперь файл output.text
содержит нужный текст.