2个或多个xml文件如何通过xml Task Ant解析

时间:2018-04-03 03:32:48

标签: ant xmltask

我试图获取xml属性和xml任务,如何循环文件集中的2个或更多文件?当我尝试在for loop中获取文件列表时,我得到了一个文件列表,因此我可以解析每个xml属性。

Test1.xml:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>  

Test2.xml

<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
</CATALOG>

它们位于同一个文件夹中我得到它的文件集并添加到列表中,获取该文件夹中的文件列表,然后我尝试解析这些xml文件并找出每个xml文件中有一个元素标记:

<target name="findxmlParse" >
    <echo>${srcDir}/xmlfolder/</echo>
    <resourcecount property="countObject">
        <fileset  id="filesref" dir="${srcDir}/xmlfolder/">
         <include name="*.xml"/>
        </fileset>
    </resourcecount>
    <!-- <echo message="There are ${countObject} object in This Folder ${srcDir}/xmlfolder/"/> -->
     <property name="files" refid="filesref"/>
     <for list="${files}" delimiter=";" param="file" >
    <sequential>
        <!-- <echo message=" @{file} "/> -->
        <!-- this is  working  for only file not in list -->
        <!-- <xmlproperty file="${srcDir}/xmlfolder/${file}" collapseAttributes="true"  /> -->
           <xmlproperty file="${srcDir}/xmlfolder/@{file}" collapseAttributes="true"  />

        <echo >@{file}--${note.to} -- ${CATALOG.CD.TITLE}</echo>

    </sequential>
    </for>
</target>

如何解析这些文件并通过特定文件夹中的那些文件列表提取其元素属性?

${srcDir} - local dir

1 个答案:

答案 0 :(得分:0)

你可以使用JAXB,它与ant:

相当不错
  1. 为您正在解析的每个xml提取架构(.xsd)。检查一下。
  2. 使用xjc从架构生成JAXB类
  3. 编写自定义ant任务以调用JAXB解组。说<listTitles catalog=“${src.dir}/thecatalog.xml” />
  4. 如果您需要代码示例,请告诉我,但我很确定您可以自己学习这些内容。