2010-06-30 79 views
0

在我的程序中,我傳遞了一些XML。如果此XML中的值符合用戶定義的條件,則存儲xml,否則將被丟棄。我遇到的問題是我需要能夠允許用戶定義條件(也可以將多個元素與「OR」和「AND」結合),然後在獲取XML時應用這些條件。這是一個C#應用程序,任何人都可以推薦一個庫,工具或幫助我以哪種方式解決這個問題?下面顯示的是我將收到的XML。如果<unit> =1和(<data> = Z<data>的第一部分在第二次昏迷後具有ABC),則用戶可能只想要存儲這個。用於XML的表達式構建器

<interface> 
    <mac>12345</mac> 
    <device>DeviceTypeA</device> 
    <id>TestUnit</id> 
    <data> 
    <unit>1</unit> 
    <transaction> 
     <event>0</event> 
     <data>Z,0,ABC,1234</data> 
     <time>2010-06-29T11:33:44.0000000Z</time> 
    </transaction > 
    </data> 
</interface> 

回答

-1

用戶是否可以看到XML?如果是這樣,你可以簡單地允許用戶輸入一個XPath表達式,如

/interface/data/unit=1

substring-before(',',/interface/data/transaction/data)='Z'

後來乾脆

if (xml.SelectNodes(xPathExpression) == null) /*discard*/

恕我直言,任何人應該鼓勵使用XML的人學習XPath;您可以在幫助輸入旁邊提供幾個簡單示例。

如果你的用戶沒有看到XML,你可能最好有幾個預定義的條件,用戶可以從中選擇,然後提供一個值,否則你將不得不創建一個完整的表達式解析器,這對於這樣的任務來說可能是過度的。