Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何搜索和替换10000个XML文件的XML标记和条目_Xml_Windows_Macos_Xml Parsing - Fatal编程技术网

如何搜索和替换10000个XML文件的XML标记和条目

如何搜索和替换10000个XML文件的XML标记和条目,xml,windows,macos,xml-parsing,Xml,Windows,Macos,Xml Parsing,我需要更新10000多个文件的XML 我是一个新手程序员,所以如果可能的话,我更喜欢使用开箱即用的东西(现有的解决方案?)。如果不是,我不怕学习和尝试新事物。我在大学里修了一门课程(编程逻辑),想让我的脚湿一湿,但这当然不会带来立竿见影的效果 所有文件都位于它们自己的基于序列号的目录中。 每个文件都称为83xyzec.xml 这些XML文件中的每一个都有两个需要搜索的标记/内容,并删除所有实例 例如: <mediaFile> content 123 </mediaFile>

我需要更新10000多个文件的XML

我是一个新手程序员,所以如果可能的话,我更喜欢使用开箱即用的东西(现有的解决方案?)。如果不是,我不怕学习和尝试新事物。我在大学里修了一门课程(编程逻辑),想让我的脚湿一湿,但这当然不会带来立竿见影的效果

所有文件都位于它们自己的基于序列号的目录中。 每个文件都称为83xyzec.xml

这些XML文件中的每一个都有两个需要搜索的标记/内容,并删除所有实例

例如:

<mediaFile>
content 123
</mediaFile>

<image>
image info 123
</image>

内容123
图像信息123
然后,我还需要在另一个标记中重新插入不同的标记/内容。 例如:

                  <track>
Need to insert>>  <action>UPDATE</action>
                  extra stuff etc 
                  more stuff
                  even more
                  </track>

需要插入>>更新
额外的东西等
更多的东西
甚至更多
最后,我需要在标记中输入一个文本字符串,但在末尾。
例如:

<right type="labelDownload">Y</right>
</track>
Y
如果有任何建议,我将不胜感激。Windows平台优先。
谢谢大家!

XSLT允许您以与英语描述非常相似的形式表达转换规则

您从一个模板规则开始,该规则说“默认情况下,当您点击一个元素时,复制它并处理它的子元素”:


XSLT允许您以与英语描述非常相似的形式表达转换规则

您从一个模板规则开始,该规则说“默认情况下,当您点击一个元素时,复制它并处理它的子元素”:


您还看过XProc吗?

您还看过XProc吗?

看看XSLT。它非常适合这种类型的工作,但是你可能需要花几个小时学习基础知识。DeepYellow,这就是我的google foo向我展示的,这就是你的意思吗?从外观上看,XSLT是XML的一种格式化方案。虽然我认为这可能是为方案设置配置的一个良好开端,但我仍然不确定解析xml、编辑和保存10000个文件所需的脚本/应用程序/程序。XSLT标准的主要驱动程序之一Michael Kay很荣幸地回答了您的问题。认真对待他的回答。XSLT是关于使用简单规则(称为模板)转换XML的,您所描述的内容可以很容易地用几个模板编写(如Michael Kay所示)。它非常适合这种类型的工作,但是你可能需要花几个小时学习基础知识。DeepYellow,这就是我的google foo向我展示的,这就是你的意思吗?从外观上看,XSLT是XML的一种格式化方案。虽然我认为这可能是为方案设置配置的一个良好开端,但我仍然不确定解析xml、编辑和保存10000个文件所需的脚本/应用程序/程序。XSLT标准的主要驱动程序之一Michael Kay很荣幸地回答了您的问题。认真对待他的回答。XSLT是关于使用简单规则(称为模板)转换XML的,您所描述的内容可以很容易地用几个模板编写(如Michael Kay所示)。昨晚我在做额外的阅读,看起来撒克逊人需要。(我还没有创建一个“可用”的程序)非常感谢您花时间向我提供有关我的问题的具体细节。我会试试这个,让你知道第一个怎么样:)谢谢你,迈克尔。昨晚我在做额外的阅读,看起来撒克逊人需要。(我还没有创建一个“可用”的程序)非常感谢您花时间向我提供有关我的问题的具体细节。我会试试这个,让你知道第一个是怎样的:)
<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>
<xsl:template match="mediaFile | image"/>
<xsl:template match="track">
  <xsl:copy>
    <action>UPDATE</action>
    <xsl:apply-templates/>
    <right type="labelDownload">Y</right>
  </xsl:copy>
</xsl:template>
<xsl:template name="main">
  <xsl:for-each select="collection('.?select=*.xml')">
    <xsl:result-document href="{tokenize(document-uri(.), '/')[last()]">
      <xsl:apply-templates/>
    </xsl:result-document>
  </xsl:for-each>
</xsl:template>
java net.sf.saxon.Transform -xsl:stylesheet.xsl -it:main -o:../output/result.xml