如何比较两个XSD文件?

时间:2014-06-11 16:12:20

标签: c# xml tfs xsd

我有两个XSD文件,它们应该是相同的。一个本地存储在机器上,一个从存储它的网络中检索。我在本地机器上运行此测试,自然测试成功。但是当我在TFS(Team Foundation Server)上运行相同的构建时,测试失败。我发现很难解释原因。我比较的方式是:

public bool compareFunc(string schema1, string schema2) 

bool passed = true;

XmlDocument doc1 = new XmlDocument();
XmlDocument doc2 = new XmlDocument();

doc1.Load(schema1);
doc2.Load(schema2);

string s1 = doc1.innerXML;
string s2 = doc2.innerXML;

for(int i=0; i< s1.length; i++){


if(_s2.Substring(i) != _s1.Substring(i)) { passed = false; }

}

return passed;

}

2 个答案:

答案 0 :(得分:4)

我猜服务器上的文件有不同的空格或换行符。这样,字符串的内容就不同了,但文件的含义是相同的。

有两种方法可以做到这一点。第一种方法是循环遍历xml内容,逐个元素,逐个属性,进行比较。第二种方法是将每个xml文档保存为一个新字符串,这样可以使布局标准化。

顺便说一下,要比较2个字符串,你可以使用(s1==s2)。因此,您当前的实现(无法正常工作)可以简化为几行:

bool compare(string s1, string s2){
    XmlDocument x1 = new XmlDocument(), x2 = new XmlDocument();
    x1.Load(s1);
    x2.Load(s2);
    return x1.InnerXml == x2.InnerXml;
}

答案 1 :(得分:1)

你可能忘记检查s1和s2长度,因为你的for只是在s1.length上迭代。