当您在Entity Framework中序列化对象时,只有该对象的第一个实例被序列化,此后对同一对象的引用将指向第一个实例。 我无法获得正确的xpath来获得第一个实例的句柄,因此我可以读取它的属性。 例如,假设我有这个xml:

<a:root>
<a:truck>
    <a:truck>
        <a:name>truck1</a:name>
        <a:tire>
            <a:tire z:Id="i1">
                <a:height>35</a:height>
                <a:width>12.5</a:width>
            </a:tire>
        </a:tire>
    </a:truck>
    <a:truck>
        <a:name>truck2</a:name>
        <a:tire>
            <a:tire z:Ref="i1" />
        </a:tire>
    </a:truck>
</a:truck>
</a:root>

我正在遍历卡车节点,我想获得轮胎高度。 在第一种情况下,它非常简单,我可以执行以下操作:

<xsl:value-of select="a:tire/a:tire/a:height" />

但是当我到达第二个卡车节点时,轮胎节点只是对第一个轮胎节点的引用,因为它们实际上是相同的轮胎对象。

我遇到问题的部分是xpath,它将读取z:Ref属性值,如果存在,则获取它指向的节点并使用它,否则使用完全序列化的节点。

===============>>#1 票数:0 已采纳

我首先定义一个键:

<xsl:key name="ref" match="a:tire" use="@z:Id"/>

然后可以使用<xsl:value-of select="a:tire/a:tire/a:height" />代替

<xsl:value-of select="a:tire/a:tire[not(@z:Ref)]/a:height | key('ref', a:tire/a:tire/@z:Ref)/a:height" />

  ask by user2288522 translate from so

未解决问题?本站智能推荐:

关注微信公众号