示例:Scala读取xml文件

这篇博客介绍了如何使用Scala读取XML文件,并详细展示了查找Test节点下的Name、查找Test节点的属性TestId以及获取特定属性值的方法,包括多种实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

test.xml内容如下

<?xml version="1.0"?>
<Tests>
    <Test TestId="0001" TestType="CMD">
        <Name>Convert number to string</Name>
        <CommandLine>Examp1.EXE</CommandLine>
        <Input>1</Input>
        <Output>One</Output>
    </Test>
    <Test TestId="0002" TestType="CMD">
        <Name>Find succeeding characters</Name>
        <CommandLine>Examp2.EXE</CommandLine>
        <Input>abc</Input>
        <Output>def</Output>
    </Test>
    <Test TestId="0003" TestType="GUI">
        <Name>Convert multiple numbers to strings</Name>
        <CommandLine>Examp2.EXE /Verbose</CommandLine>
        <Input>123</Input>
        <Output>One Two Three</Output>
    </Test>
    <Test TestId="0004" TestType="GUI">
        <Name>Find correlated key</Name>
        <CommandLine>Examp3.EXE</CommandLine>
        <Input>a1</Input>
        <Output>b1</Output>
    </Test>
    <Test TestId="0005" TestType="GUI">
        <Name>Count characters</Name>
        <CommandLine>FinalExamp.EXE</CommandLine>
        <Input>This is a test</Input>
        <Output>14</Output>
    </Test>
    <Test TestId="0006" TestType="GUI">
        <Name>Another Test</Name>
        <CommandLine>Examp2.EXE</CommandLine>
        <Input>Test Input</Input>
        <Output>10</Output>
    </Test>
</Tests>

读取xml文件

方式一:

val xml=XML.load(this.getClass.getClassLoader.getResource("test.xml"))

方式二:

val xml=XML.load(new FileInputStream("D:\\java\\BigData\\scala\\Demo\\src\\main\\resources\\test.xml"))

方式三

val xml =XML.load(new InputStreamReader(new FileInputStream("D:\\java\\BigData\\scala\\Demo\\src\\main\\resources\\test.xml")))

查找

查找Test下的Name
val name=xml \"Test" \"Name"
查找所有Name
val names=xml \\"Name"
查找Test中属性“TestId”

方式一:

val TestIds = (xml \ "Test").map(_ \ "@TestId")

方式二:

val TestIds = (xml \ "Test" \\ "@TestId")
查找Test中属性“TestId”=“0003”

方式一:

val filters=(xml \\ "Test").filter(_.attribute("TestId").exists(_.text.equals("0003")))

方式二:

val filters=(xml \\ "Test").filter(x=>((x \ "@TestId").text).equals("0003"))
获取所有Test下的“TestId”,文本内容,“TestType”的值
val filters=(xml \\ "Test").map(x=>(x \ "@TestId",x.text,x \ "@TestType"))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值