0

我试图获取 xml 属性和 xml 任务,如何循环文件集中的 2 个或更多文件?当我试图让它们进入时,我会得到一个文件列表,for loop这样我就可以解析每个 xml 属性。

测试1.xml:

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

测试2.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
4

1 回答 1

0

您可以使用 JAXB,它与 ant 配合得非常好:

  1. 为您正在解析的每个 xml 提取架构 (.xsd)。检查它。
  2. 使用 xjc 从模式生成 JAXB 类
  3. 编写一个自定义 ant 任务来调用 JAXB 解组。说<listTitles catalog=“${src.dir}/thecatalog.xml” />

如果您需要代码示例,请告诉我,但我很确定您自己学习这些东西会更有趣。

于 2018-04-25T12:52:58.253 回答