我有一个巨大的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