Scala:读取xml文件(示例)

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"))
posted @ 2019-06-13 15:11  drl_blogs  阅读(2014)  评论(0编辑  收藏  举报