You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XSL获取XML树中compteFacturation节点的第二个libelle值?

问题描述

我用C#构建了如下的XML结构:

List<Noeud> compteFacturation = new List<Noeud>();
compteFacturation.Add(new Noeud("libelleCompteDeFacturation", "Compte N° 1"));
compteFacturation.Add(new Noeud("nombreLigneTraitees", "10"));
compteFacturation.Add(new Noeud("nombreLigneStatutOK", "19"));
compteFacturation.Add(new Noeud("nombreLigneStatutKO", "11"));
compteFacturations.Add(new Noeud("compteFacturation", compteFacturation));
compteFacturation = new List<Noeud>();
compteFacturation.Add(new Noeud("libelleCompteDeFacturation", "Compte N° 2"));
compteFacturation.Add(new Noeud("nombreLigneTraitees", "26"));
compteFacturation.Add(new Noeud("nombreLigneStatutOK", "25"));
compteFacturation.Add(new Noeud("nombreLigneStatutKO", "24"));
compteFacturations.Add(new Noeud("compteFacturation", compteFacturation));

当我用XSLT的<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation" />时,只能拿到第一个元素的“Compte N° 1”,但我想获取第二个元素的“Compte N° 2”。试了<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation[position() = 2]" />和<xsl:value-of select="//compteFacturation/@libelleCompteDeFacturation/*[2]" />都没结果,该怎么实现呢?

解决方案

首先得说你之前写法的核心问题:你用@libelleCompteDeFacturation是在找属性,但从你的C#代码来看,libelleCompteDeFacturation其实是compteFacturation的子元素,不是属性!这就是为啥之前的尝试都没效果。

给你几个可行的写法:

写法一:先定位第二个compteFacturation元素,再取子元素

<xsl:value-of select="//compteFacturation[2]/libelleCompteDeFacturation" />

这里//compteFacturation[2]会选中文档里所有compteFacturation元素中的第二个,然后直接取它下面的libelleCompteDeFacturation子元素的内容,刚好就是你要的“Compte N° 2”。

写法二:先收集所有目标子元素,再取第二个

<xsl:value-of select="//compteFacturation/libelleCompteDeFacturation[2]" />

这种写法是先找出所有compteFacturation下的libelleCompteDeFacturation元素,然后取其中的第二个,效果和上面完全一致。

为啥之前的写法不行?

  • 第一个尝试//compteFacturation/@libelleCompteDeFacturation[position() = 2]:因为你的XML里根本不存在名为libelleCompteDeFacturation的属性,所以这个节点集合是空的,自然取不到任何值。
  • 第二个尝试//compteFacturation/@libelleCompteDeFacturation/*[2]:属性本身不是节点集合,不能用/*[2]去选择子节点,再加上属性本身就不存在,所以肯定无效。

内容的提问来源于stack exchange,提问作者user609511

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 16:52:56