-1

我有一对大/长的 XML 文件,我使用 nawk 来分解它们,这样我就可以更轻松地处理与我的项目实际相关的部分。我拥有的代码正在做我想做的事,但它生成的文件缺少描述性文件名,这使得我需要花费更多时间来识别哪些子 XML 文件对应于我想要使用的数据。这是我现在拥有的:

第一个 XML 文件源

将这个文件分开的代码:

nawk ' {print > "kingresult"(NR%1?i:i++)".txt"; }' i=1 PI.txt

第二个 XML 文件源

将这个文件分开的代码:

nawk -v RS="</?Results>" -v FS="<Result>" '{ for(N=1; N<=NF; N++) if($N ~ /<[/]/) print FS $N > "stateresult00"++C".xml" }' 20140805_AllState.xml

第一个 XML 文件正在逐行拆分;第二个是在 nawk 找到新的“结果”元素时被分开。然而,在这两种情况下,生成的文件名如下所示:

结果1.xml 结果2.xml 结果3.xml

... 等等。

如果文件名更具描述性,会节省很多时间,看起来像这样:

result1-John.xml result2-Jane.xml result3-Jake.xml

在第一个文件的情况下,如果只有该行的第一个单词被合并到文件名中是可以接受的。

对于第二个 XML 文件,最好将 < CandidateName > 元素中的第一个单词添加到文件名中。如何修改我的代码以让 nawk 创建更具描述性的文件名?

4

1 回答 1

0

XSLT 2.0 解决方案:

<xsl:for-each select="/*/Result">
  <xsl:result-document 
      href="result{position()}-{tokenize(CandidateName, '\s+')[1]}.xml">
    <xsl:copy-of select="."/>
  </xsl:result-document>
</xsl:for-each>
于 2014-07-31T21:00:46.287 回答