2011-01-13 40 views
0

我有一個場景,我需要檢查XML文件中的節點數。由於XPath可能會因不同情況而有所不同,因此我希望將其配置爲xml /文本文件配置XPath並使用LINQ

我在XQuery中檢查過,但在C#中幾乎找不到任何實現。

由於LINQ也做類似的事情,我想使用它。

Ex。 XML:

<ROOT><NODE1><TXT>ABC</TXT></NODE1><NODE1><TXT>DEF</TXT></NODE1></ROOT> 

我希望配置我的情況是這樣的(在一個文本文件):

/ROOT/NODE1/TXT [COUNT=2] 

會有這樣

的XPath的正數是多麼容易我使用LINQ,檢查XPATH並獲得計數?

在此先感謝

乾杯, KARTHIK

回答

0
XDocument doc = XDocument.Load(xmlFilePath); 
int count = doc.Descendants("TXT").Count(); 

在這種情況下,你可以這樣做:

 XDocument doc = XDocument.Load(filePath); 
     var xPath = @"/ROOT/NODE1/TXT"; 
     int count = doc.Descendants(xPath.Substring(xPath.LastIndexOf("//") + 1)).Count(); 

,但它不是一般的情況下,你對子級解釋有關情況的詳細信息強制使用XPath字符串?

+0

謝謝。而不是(「TXT」)我能否提供我配置的XPAHT?我不想在我的代碼中對任何XPATH進行硬編碼。 – KK99

+0

@Karthik K,看我的更新。 –

+0

太好了。讓我試試這個。感謝您的快速響應 – KK99

3

檢查參考System.Xml.Xpath它允許您使用xpath來處理Xml數據。

XDocument doc = XDocument.Load(filePath); 
var xPath = @"/ROOT/NODE1/TXT"; 
int count = doc.XPathSelectElements(xPath).Count();