使用 xpath 分割 xml 值并检查字符串位置

2024-01-09

我有以下 xml 文件:

 <courses>
   <course>
    <name>Course 1</name>
    <code>00162</code>
    <questions>2,2,1,1,2,1,1,1</questions>
   </course>
   </courses>

我需要查询文件(我使用 xpath)来分割“问题”元素,检查每个数字出现的位置并检查它是数字 1 还是数字 2。

基本上我需要在 xpath 中这样做:

Dim ints As String() = QuestionsString.ToString.Split(",")
Dim i As Integer

        For i = 0 To UBound(ints)    
            If ints(i) = "2" Then
             'do something
            Else
            'do something else
            End If
        Next

根据评论更新

嗨,谢谢你。我本来打算编辑 问题,因为它不正确。我想 例如,获取所有课程名称 以及其“questions”元素的代码 (分割后)第二个有“2” 位置,如 1 所示,2,2,1,1,1,2,1 谢谢!


在 XSLT 1.0 中,您将使用递归模板来拆分字符串。

借用自@Tomalak 对类似问题的回答 https://stackoverflow.com/questions/2850100/comma-separated-string-parsing-xslt/2850181#2850181,是一个例子:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <!--Call the recursive template to split the string-->
        <xsl:call-template name="split">
            <xsl:with-param name="list" select="/courses/course/questions" />
        </xsl:call-template>
    </xsl:template>

    <xsl:template name="split">
        <xsl:param name="list"      select="''" />
        <xsl:param name="separator" select="','" />
        <xsl:if test="not($list = '' or $separator = '')">
            <xsl:variable name="head" select="substring-before(concat($list, $separator), $separator)" />
            <xsl:variable name="tail" select="substring-after($list, $separator)" />

            <!--Use the parsed value to do something-->
            <xsl:call-template name="handleQuestion">
                <xsl:with-param name="value" select="$head"/>
            </xsl:call-template>

            <xsl:call-template name="split">
                <xsl:with-param name="list"      select="$tail" />
                <xsl:with-param name="separator" select="$separator" />
            </xsl:call-template>
        </xsl:if>
    </xsl:template>

    <xsl:template name="handleQuestion">
        <xsl:param name="value" />
        <xsl:choose>
            <xsl:when test="$value=2">
                <!--Do something-->
            </xsl:when>
            <xsl:otherwise>
                <!--Do something else-->
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

在 XSLT 2.0 中,您可以使用tokenize()功能 http://www.xsltfunctions.com/xsl/fn_tokenize.html:

<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:template match="/">
        <xsl:for-each select="tokenize(/courses/course/questions,',')">
            <xsl:choose>
                <xsl:when test="number(.)=2">
                    <!--Do something-->
                </xsl:when>
                <xsl:otherwise>
                    <!--Do something else-->
                </xsl:otherwise>
            </xsl:choose>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 xpath 分割 xml 值并检查字符串位置 的相关文章

随机推荐

  • 如何让 SCons 替换已安装文本文件中的文本

    我希望能够在从 scons 安装一些 python 脚本时替换模板变量 SOFTWARE VERSION scons已经有这样的功能了吗 如果没有 那么挂钩 scons 安装过程的最佳方法是什么 以便我可以在安装过程中执行此操作 你可以使用
  • Eclipse Spring Boot - 在 TransactionAutoConfiguration 和 Neo4jDataAutoConfiguration 之间检测到自动配置周期

    从昨天开始 我在正在开发的 Spring Boot 应用程序 1 5 2 RELEASE 上遇到了一个非常奇怪的错误 在 Eclipse 中运行项目时 我开始遇到以下异常 从命令行运行它时 一切正常 但在开发和调试时我仍然需要从 Eclip
  • 如何构建包含 Mac Catalyst 的 Fat Framework?

    如何构建一个包含构建 Mac Catalyst 应用程序所需架构的胖框架 苹果引入了一个 未记录的 新目标 x86 64 apple ios13 0 macabi 如何构建此目标取决于您的框架构建环境 1 XC框架 如果您的框架是 Xcod
  • 如何创建asyncTask来防止networkOnMainThreadException

    我是 Android 应用程序开发新手 我尝试开发一个android服务器客户端聊天 对于我的第一个项目 这是客户端的代码 当客户按下btnJoin 它将连接到服务器并发送一个字符串 我读过很多例子 其中很多 看起来像这样 我有一个netw
  • 如何使用宏注释向 Scala 案例类添加无参数构造函数?

    我正在尝试回答这个问题 https stackoverflow com questions 13812172 how can i create an instance of a case class with constructor arg
  • 序列化 protobuf 输出的文件扩展名

    似乎很奇怪 我找不到这个问题的答案 但是在文件中存储序列化的 protobuf 输出时应该使用什么文件扩展名 只是 protobuf 我所说的 json 相当于一个 json 文件 我只使用 bin 但据我所知这里没有实际的标准 如果pro
  • “让我保持登录状态”——最好的方法

    我的 Web 应用程序使用会话来存储用户登录后的信息 并在用户在应用程序中从一个页面移动到另一个页面时维护该信息 在这个特定的应用程序中 我存储user id first name and last name的人 我想在登录时提供一个 保持
  • 捕获音频 Phonegap 错误代码 3

    我正在创建一个带有录音的应用程序 我尝试实现此示例代码 http docs phonegap com en 3 3 0 cordova media capture capture md html capture capture 音频 htt
  • 将 nan 替换为 Mean

    我想用 python 文本中每列的平均值替换丢失的数据点 所以 我的想法是 从文本文件中读取每一列 计算每列的平均值 将 nan 替换为每列中的计算平均值 将它们写回新的文本文件 我认为在第 2 步之前我没问题 但第 3 步和第 4 步我遇
  • 如果没有 .pdb 文件,C# 分析将失败

    我正在尝试使用 SonarQube 4 2 的新 C 插件 v3 0 根据插件文档 我需要 pdb 文件来运行包括 FxCop 规则的分析 实际上 如果输出文件夹中不存在所述 pdb 文件 那么在执行 sonar runner 时我会收到一
  • 如何从使用 api 返回的 JSON 对象初始化 google.maps.DirectionsResult?

    我有一个使用 php 脚本中的 Directions api 返回的对象 这是用于请求指示的 PHP 代码 Fetch and decode JSON string into a PHP object json file get conte
  • 在 NorthPolarStereo 投影中使用 Cartopy 绘制圆圈

    我想在 Cartopy 中以 NorthPolarStereo 投影绘制圆圈 并以经纬度单位提供中心和半径 类似和优秀的问题和答案可用于底图here https stackoverflow com questions 49134634 ho
  • 批处理文件获取 CPU 温度(°C)并设置为变量

    我如何获取批处理文件来计算 CPU 的温度并将其作为变量返回 我知道这是可以做到的 因为我已经看到它已经完成了 该解决方案可以使用任何外部工具 我在谷歌上搜索了至少两个小时 但一无所获 任何人都可以帮忙吗 谢谢 您可以使用wmic exe
  • Rails如何实现before_filter?

    我对 Rails 如何实现过滤器感兴趣 例如before filter 但读完源码后 我还是一头雾水 我注意到 Rails 的框架维护了一个filter chain 并在目标方法之前运行过滤器 但是 我不明白一个重要的过程 rails如何捕
  • DocumentDB 从另一个存储过程或其本身调用存储过程

    有没有办法针对 DocumentDB 文档递归调用存储过程 甚至是 UDF 如果可行的话 我们有一个看起来像这样的文档 docID my id owner fred items itemID 1 type item value 3 item
  • 当我单击本机反应按钮时如何显示或切换文本?

    我的代码无法正常工作 我的代码有什么问题吗 我正在尝试创建一个简单的问答应用程序 我分享了下面的代码示例 在下面的示例中 如何默认隐藏答案并在单击按钮时显示答案 感谢您的支持 import React useEffect useState
  • initdb /usr/local/var/[db] 和 createdb [db] 有什么区别

    我开始使用 PostgreSQL 但我对创建数据库的两种方法感到困惑 当我第一次安装它时 说明说我必须创建一个默认数据库initdb usr local var postgres当我查找数据库时 我可以看到我有一个名为 postgres 的
  • 更改AS3中的舞台背景颜色?

    我正在使用纯 AS3 来构建我的项目 我想知道是否有办法通过 AS3 更改舞台背景颜色 感谢您的帮助 像这样 SWF backgroundColor 0xec9900 public class Main extends Sprite
  • 关于 UML 类图的问题吗?

    您好 我有一些关于 UML 类图的问题 我们将不胜感激 1 如何在属性中显示指针 2 什么是多重性 3 构图箭头应该朝什么方向 4 如何放置枚举 根据当前的 UML 标准 2 4 1 和下一个 2 5 几乎仅在更简单的文档中有所不同 指针
  • 使用 xpath 分割 xml 值并检查字符串位置

    我有以下 xml 文件