XSL v1.0如何遍历对象列表并获取其中每个属性值?
错误原因
你当前的写法有两个核心问题:
xsl:for-each执行时会自动切换上下文节点,进入循环后你只需要基于当前选中的节点写相对路径即可,不需要重复拼接父级路径- 你遍历的是
adressList列表容器本身,而不是容器内的每个Address对象节点,自然拿不到每个地址的属性值
XSLT 1.0 正确写法
对应你给出的Java类,序列化后的XML结构通常如下(仅作参考):
<employee> <emp_id>123</emp_id> <adressList> <Address> <city>北京</city> <country>中国</country> </Address> <Address> <city>上海</city> <country>中国</country> </Address> </adressList> </employee>
对应的遍历XSL写法如下:
<!-- 遍历adressList下的每一个Address节点 --> <xsl:for-each select="employee/adressList/Address"> <!-- 直接写相对当前Address节点的属性路径即可 --> <xsl:value-of select="city" /> <xsl:value-of select="country" /> </xsl:for-each>
如果你的XML结构里adressList下没有额外的Address包裹层,每个地址节点直接是adressList的子节点,写法可以调整为:
<xsl:for-each select="employee/adressList/*"> <xsl:value-of select="city" /> <xsl:value-of select="country" /> </xsl:for-each>
补充说明
XSLT 1.0本身完全支持遍历节点列表并访问子节点属性,只要严格基于当前上下文节点写相对路径即可,不要重复写循环外层的父节点路径。
内容的提问来源于stack exchange,提问作者Vighnesh
相关产品推荐
相关产品推荐

