我有一個巨大的XML文檔。自動完成過濾器的Xpath和正則表達式
類似的東西
<?xml version="1.0" encoding="utf-8"?>
<elements>
<element id="1" name="france" />
<element id="2" name="usa" />
<element id="3" name="Spaïn" />
<element id="4" name="spain and africa" />
<element id="5" name="italie and Spâin" />
</elements>
我想有這樣的事情:
string str = "spain";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(myXML);
// Xpath with regex or something very veloce
XmlNodeList xmlNodeList = xmlDoc.SelectNodes("//element"+ something);
而且XmlNodeList中會包含:
<element id="3" name="Spaïn" />
<element id="4" name="france with spâin and africa" />
<element id="5" name="italie and Spain" />
它必須忽略的情況下
和重點
目前我已經
XmlNodeList xmlNodeList = xmlDoc.SelectNodes("/*/*[contains(concat(' ',translate(translate(@n,translate(@n, 'aaabcdefghiiijklmnopqrstuvwxyzâÂABCDEFGHïÏIJKLMNOPQRSTUVWXYZ', ''),''), 'âÂABCDEFGHïÏIJKLMNOPQRSTUVWXYZ','aaabcdefghiiijklmnopqrstuvwxyz'),' '),' "+prefix+" ')]");
其中@n = @名稱和前綴也許是:「西班牙」或「西班牙」或「西班牙」,它給我0解決方案
如果你的過濾器是用戶提供的東西,那麼一定要以某種方式逃避它。例如,如果用戶輸入一些包含xpath特殊字符的字符串,那麼'SelectNodes'可能會拋出 – 2010-12-10 14:47:53
好問題,+1。請參閱我的答案,以獲取更爲一般的解決方案,該解決方案允許任何非字母字符分隔任何單詞。 :) – 2010-12-10 21:09:06
@ Christophe-Debove:謝謝你讓這個問題更加有趣。看到我更新的答案。 :) – 2010-12-15 14:54:48