当前位置: 首页 > 知识库问答 >
问题:

XML元素循环出现问题

楚灿
2023-03-14

我在循环节点时遇到了麻烦。我有一些工作示例,但是XML布局略有不同。

XML

<FAMILY>
<FAMILY_NAMES id="1" name="Smith">
   <KID name="Jim">First Born</KID>
   <KID name="Joe">Enjoys playing outside</KID>
   <KID name="Jon">Straight A student</KID>
</FAMILY_NAMES>
<FAMILY_NAMES id="2" name="Barnes">
   <KID name="Mike">Just got his license</KID>
   <KID name="Dan">On vacation</KID>
   <KID name="Ken">Going to graduate school</KID>
</FAMILY_NAMES>
<FAMILY_NAMES id="3" name="Thompsons">
 <KID name="James">Loves sports</KID>
 <KID name="Ben">Middle Child</KID>
 <KID name="Frank">Youngest child</KID>
</FAMILY_NAMES>
</FAMILY

我可以得到一个家庭的列表,但我需要得到每个家庭下的KID标签(如“喜欢在外面玩”)之间的随机信息列表。到目前为止,我只能得到一份姓氏的名单。

XSLT

<xsl:for-each select="//FAMILY/FAMILY_NAMES">
  <xsl:value-of select="@name"></xsl:value-of><xsl:text>&#xa;</xsl:text>
   <xsl:for-each select="KID">
     <xsl:value-of select="KID"></xsl:value-of><xsl:text>&#xa;</xsl:text>
   </xsl:for-each>
</xsl:for-each>

只是不知道为什么这不起作用。

共有1个答案

蒋阳华
2023-03-14

当您循环遍历每个KID时,当前节点已经是每个KID,因此要获取KID的字符串值,请使用

这是XSLT

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text" version="1.0"/>

  <xsl:template match="/">
    <xsl:for-each select="/FAMILY/FAMILY_NAMES">
      <xsl:value-of select="@name"/>
      <xsl:text>&#xa;</xsl:text>
      <xsl:for-each select="KID">
        <xsl:text>  </xsl:text>
        <xsl:value-of select="@name"/>
        <xsl:text>: </xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>&#xa;</xsl:text>
      </xsl:for-each>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

应用于您的输入XML,

<FAMILY>
  <FAMILY_NAMES id="1" name="Smith">
    <KID name="Jim">First Born</KID>
    <KID name="Joe">Enjoys playing outside</KID>
    <KID name="Jon">Straight A student</KID>
  </FAMILY_NAMES>
  <FAMILY_NAMES id="2" name="Barnes">
    <KID name="Mike">Just got his license</KID>
    <KID name="Dan">On vacation</KID>
    <KID name="Ken">Going to graduate school</KID>
  </FAMILY_NAMES>
  <FAMILY_NAMES id="3" name="Thompsons">
    <KID name="James">Loves sports</KID>
    <KID name="Ben">Middle Child</KID>
    <KID name="Frank">Youngest child</KID>
  </FAMILY_NAMES>
</FAMILY>

产生以下输出:

Smith
  Jim: First Born
  Joe: Enjoys playing outside
  Jon: Straight A student
Barnes
  Mike: Just got his license
  Dan: On vacation
  Ken: Going to graduate school
Thompsons
  James: Loves sports
  Ben: Middle Child
  Frank: Youngest child

 类似资料:
  • 问题内容: 我想遍历一个列表,并删除计数超过一次的项目,这样它们就不会被for循环重复打印。 但是,列表中仅出现一次的某些项目似乎也受此影响,我不知道为什么。 任何投入将不胜感激。 示例输出: 输出: 因此完全忽略了4和5。 问题答案: 遍历列表时,请勿修改列表。这应该工作: 结果是:

  • 我发现这个问题很有帮助,但是我仍然很难让我的循环正确工作。 期望: 我正在构建一个简单的JavaFX应用程序,它的用户界面通过几个文本字段和几个按钮进行输入。我已经建立了一个“重置”按钮,应该清除所有文本字段中的文本,但是我不能让它工作。 按钮的方法循环遍历FXML元素,我希望它能识别TextFields并将它们添加到列表中: 然后,文本字段列表返回到此方法,其中文本字段被循环并清除: 现实: 在

  • 问题内容: 如标题所示,我正在尝试使用for循环将元素添加到xml文档中。我有一个字符串叫,我想遍历,并为每个名称创建一个元素与属性,并与孩子具有的属性,,,和。 不幸的是,如果您在下面的代码中向下滚动到该方法,当我尝试调用时,会出现以下错误: 我看了几个关于stackoverflow的具有相同错误的问题,但是它们似乎都是在与我的情况完全不同的情况下发生的。我最好的猜测是,该错误与以下事实有关:我

  • 问题内容: 我试图设置获取所有元素的ID 。我写了以下代码: 但是我在控制台中得到以下输出: 这不是我所期望的。为什么第二个控制台输出却第一个控制台输出是? 问题答案: 在回答原始问题时,您使用不正确。在您的代码中,是索引。因此,要从伪数组中获取值,就必须这样做,而要获取id,就必须这样做。但是,首先不应该这样做。 摘要 永远不要使用来迭代nodeList或HTMLCollection。避免它的原

  • 大家好,我正在尝试在while循环中创建foreach循环。在foreach循环中,我试图生成包含div的列表元素,但我有非常奇怪的输出 这是我的密码 这是我的调试器consonle中的一个图像 正如你在图片中看到的,在ul标签中只存在一个li,其余的都在ul /ul. 我的第一个想法是,将div标记放在li标记中是无效的,但如果在文件的顶部使用它,则不是这样 DOCTYPE html PUBLI

  • 主要内容:什么是 XML 元素?,XML 命名规则,最佳命名习惯,XML 元素是可扩展的XML 文档包含 XML 元素。 什么是 XML 元素? XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。 一个元素可以包含: 其他元素 文本 属性 或混合以上所有... <bookstore> <book category="CHILDREN"> <title>Harry Potter</title> <author>J K. Rowling</author> <year>2