编辑成千上万的XML数据

编辑成千上万的XML数据,xml,Xml,我正在编辑一个xml文件,如下所示: <?xml version="1.0"?> <rss version="2.0"> <channel> <title>Test Store</title> <link>http://www.example.com</link> <description>An example item from the feed</descript

我正在编辑一个xml文件,如下所示:

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Test Store</title>
    <link>http://www.example.com</link>
    <description>An example item from the feed</description>

    <item>
      <id>DB_1</id>
      <title>Diamond Ring</title>
      <description>The Most Beautiful Diamond Ring</description>
      <google_product_category>Accessories</google_product_category>
      <product_type>Rings</product_type>
      <link>http://www.example.com/rings</link>
      <image_link>http://www.example.com/ring.jpg</image_link>
      <condition>new</condition>
      <availability>in stock</availability>
      <discount>10.00%</discount>
      <price>1490.0</price>
      <brand>ABC</brand>
      <item_group_id>GROUP_1</item_group_id>
    </item>

    <item>
      <id>DB_2</id>
      <title>Gold Ring</title>
      <description>Pretty Gold Ring</description>
      <google_product_category>Accessories</google_product_category>
      <product_type>Rings</product_type>
      <link>http://www.example.com/gold-rings</link>
      <image_link>http://www.example.com/gold-ring.jpg</image_link>
      <condition>new</condition>
      <availability>in stock</availability>
      <discount>20.00%</discount>
      <price>500.0</price>
      <brand>ABC</brand>
      <item_group_id>GROUP_2</item_group_id>
   </item>

 </channel>
</rss>

测试库
http://www.example.com
提要中的一个示例项
DB_1
钻戒
最漂亮的钻石戒指
配件
戒指
http://www.example.com/rings
http://www.example.com/ring.jpg
新的
有现货的
10.00%
1490
基础知识
第1组
DB_2
金戒指
漂亮的金戒指
配件
戒指
http://www.example.com/gold-rings
http://www.example.com/gold-ring.jpg
新的
有现货的
20.00%
500
基础知识
第2组
您可以看到,在每个“item”元素中,都有一个元素“折扣”。我想将所有元素“折扣”更改为“条件”,并使用“新”作为内容。例如:

之前:

<discount>10.00%</discount>
10.00%
之后:

<condition>new</condition>
新建
对于元素的重命名,我可以简单地使用任何文本编辑器的find&replace函数。但是,对于元素含量,由于有数千个不同的值(例如10%/20%/23%/等),我无法找到一种方法将它们全部更改为“新”值

我应该使用什么想法或工具来进行编辑


谢谢。

实际上,在java中使用XPath和vtd xml只需要10多行。。。这是密码

import com.ximpleware.*;
import java.io.*;

public class replaceElements2 {

    public static void main(String[] s) throws VTDException,IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("d:\\xml\\rss.xml", false)){
            System.out.println("parsing error");
            return;
        }
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        XMLModifier xm = new XMLModifier(vn);
        ap.selectXPath("/rss/channel/item/discount");
        int i=0;
        byte[] ba="<condition>new</condition>".getBytes();
        while((i=ap.evalXPath())!=-1){
            xm.remove();
            xm.insertAfterElement(ba);
        }
        xm.output("d:\\xml\\rss_new.xml");
    }
}
导入com.ximpleware.*;
导入java.io.*;
公共类替换元素2{
公共静态void main(字符串[]s)引发VTDException、IOException{
VTDGen vg=新VTDGen();
如果(!vg.parseFile(“d:\\xml\\rss.xml”,false)){
System.out.println(“解析错误”);
返回;
}
VTDNav vn=vg.getNav();
自动驾驶仪ap=新自动驾驶仪(vn);
XMLModifier xm=新的XMLModifier(vn);
ap.选择XPath(“/rss/channel/item/discount”);
int i=0;
byte[]ba=“new”.getBytes();
而((i=ap.evalXPath())!=-1){
xm.remove();
xm.insertAfterElement(ba);
}
输出(“d:\\xml\\rss_new.xml”);
}
}

您可以使用熟悉的编程语言和该编程语言中的XML解析库。查看你的个人资料,PHP将是一个可行的选择——它的XML库和其他任何一个一样疯狂,在“网”上有很多例子,它会比较容易得到结果。你也可以考虑专用于操作/转换XML文件的专用语言。大多数通用语言——Java、PHP、Python、VB——都有运行XSLT1.0脚本的库。还有像这样的专用引擎可以运行2.0甚至3.0脚本