我有兩個Xml文件,我將調用第一個Input Xml
和第二個Template Xml
。 Template Xml
是一個靜態Xml,我想驗證Template Xml
是否是Input Xml
的子集。我如何在C#中實現這一點?如何驗證一個xml是否是C#中另一個子集的子集
子集我的意思是我想驗證Template Xml
中提到的Xml標記和屬性是否存在於具有相同值的Input Xml
中。
我有兩個Xml文件,我將調用第一個Input Xml
和第二個Template Xml
。 Template Xml
是一個靜態Xml,我想驗證Template Xml
是否是Input Xml
的子集。我如何在C#中實現這一點?如何驗證一個xml是否是C#中另一個子集的子集
子集我的意思是我想驗證Template Xml
中提到的Xml標記和屬性是否存在於具有相同值的Input Xml
中。
使用xpath查詢兩個XML文件並比較它們的值。
你可以找到參考XPATH以下鏈接:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm
Conatains是非常開放的結束。關於標籤和屬性的命令......它必須以相同的順序以及標籤深度。假設只有來自模板的匹配標籤(如果它存在於xml中)(與深度無關),則可以使用以下擴展方法。
public static bool SupportsTemplate(this XmlDocument xmlDoc, XmlNode template) {
bool found = true;
var nodes = template.ChildNodes;
foreach(XmlNode node in nodes){
found = xmlDoc.SelectSingleNode("//" + node.Name) == null ? false : true;
if (!found) break;
if (node.HasChildNodes)
found = xmlDoc.SupportsTemplate(node);
if (!found) break;
}
return found;
}
尚未測試&不優化的代碼(調用像xmlDoc.SupportsTemplate(template.DocumentElement)。實施類似的東西,你可以擴展這一檢查屬性爲好。
我會reccommed使用XML架構文件(XSD),除非您沒有選擇。請參閱:http://en.wikipedia.org/wiki/XML_schema – MadcoreTom
我想確保具有特定值的特定標籤和屬性存在,但不在意另外,XML中已經有了一個我無法修改的XSD,也許我錯過了一些東西,你能否詳細說明我該如何使用XSD – Rishabh