在大多数 API 中处理此类结构是很棘手的。我首先使用 XSLT 将数据转换为更规则的结构:
<xsl:for-each-group select="*" group-starting-with="EMAIL">
<ENTRY email="{EMAIL}">
<xsl:copy-of select="PUBLIC_KEY"/>
</ENTRY>
</xsl:for-each-group>
这会将其变成:
<ENTRY email="A">
<PUBLIC_KEY>A1</PUBLIC_KEY>
<PUBLIC_KEY>A2</PUBLIC_KEY>
</ENTRY>
<ENTRY email="B">
<PUBLIC_KEY>B1</PUBLIC_KEY>
<PUBLIC_KEY>B2</PUBLIC_KEY>
</ENTRY>
作为一般原则,如果您的 XML 格式难以处理,最好在处理的第一阶段将其清理,以避免使实际应用程序的逻辑复杂化。