在两个xml文件之间“查找并替换”

时间:2013-01-09 17:49:06

标签: xml replace

这是一个例子。

文件1:

<entry>
    <uselesstag1>data!</uselesstag>
    <identifier>entryname<identifier>
    <uselesstag2>data</uselesstag>
    <uselesstag5>moredata</uselesstag>
    <importantdata>8</importantdata>
    <uselesstag3>somemoredata<uselesstag>
</entry>

[...]

文件2:

<entry>
    <uselesstag6>yetmoredata</uselesstag>
    <identifier>entryname<identifier>
    <uselesstag3758>data</uselesstag>
    <uselesstag25>moredata</uselesstag>
    <uselesstag100>whynotmoredata<uselesstag>
    <importantdata>0</importantdata>
    <uselesstag603>stilldata<uselesstag>
</entry>

[...]

我想做的是以下内容:

如果<importantdata>中的数据在第二个文件中为0但在第一个文件中不是,请将其替换为第一个文件的值。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我不知道您使用的编程语言,这是一个C#解决方案。

        //Load your xml files first
        XmlDocument doc1 = new XmlDocument();
        doc1.Load("file1.xml");
        XmlNode root1 = doc1.DocumentElement;

        XmlDocument doc2 = new XmlDocument();
        doc2.Load("file2.xml");
        XmlNode root2 = doc2.DocumentElement;

        //Find <importantdata> in each xml document
        XmlNode importantDataInFile1 = root1.SelectSingleNode("/entry/importantdata");
        XmlNode importantDataInFile2 = root2.SelectSingleNode("/entry/importantdata");
        string value1 = importantDataInFile1.InnerText;
        string value2 = importantDataInFile2.InnerText;
        //If the data in <importantdata> is 0, replace its value with value1 
        if (value2.Equals("0") && !value1.Equals("0"))
        {
            importantDataInFile2.InnerText = value1;
            doc2.Save("file2.xml");
        }  

这不是一个难题,我认为你可以让它发挥作用。希望它有所帮助。