1.xpath如何获得属性字符串比如
平台及工具:windows7 旗舰版VS2008问题:当生成的XPath字符串包含两个字符属性条件时出现异常“具有无效标记” 。根据提供的元素属性名称数组及其对应的值数组合成XPath字符串,然后使用XPathSelectElements函数查询所有满足条件的元素集合,以下面的简单用户信息XML文档为例:[html] view plaincopy 通过以下函数查询出满足条件的元素集合:[csharp] view plaincopy/// /// 根据指定属性和值条件查找元素 /// /// 元素属性名称数组 /// 元素属性对应的值数组 /// public List FindElements(string[] columns, string[] values) { if (columns.Count() != values.Count()) { throw new Exception("条件字段数目和值数目不匹配,无法生成查询条件!"); } //循环逐个查找到满足条件的元素 StringBuilder xpath = new StringBuilder(xTableName + "["); for (short index = 0; index 0) { xpath.Append(" AND"); } xpath.Append(columns[index]); xpath.Append("="); xpath.Append("'" + values[index] + "'"); } xpath.Append("]"); //根据xpath进行查询 return xmlDB.XPathSelectElements(xpath.ToString()); } 如果是单个属性作为条件,能够正确找到需要的元素;如果为多个元素属性作为条件,而且其中包含多个字符串类型条件将产生具有无效标记的异常,跟踪xpath.ToString()生成的查询条件及其结果为:XPath字符串结果User[@ID='U001'] 成功 User[@ID='U001' AND @Age=20] 成功 User[@Age=20] 成功 User[@Age>20] 成功 User[@ID='U001' AND @UserName='Jack'] 异常 User[@ID='' AND @UserName=''] 异常 User[@ID=\"U001\" AND @UserName=\"Jack\"] 异常 User[@ID=\'U001\' AND @UserName=\'Jack\'] 异常 @"User[@ID=\'U001\' AND @UserName=\'Jack\']" 异常 为达到同样的目的只能采用折衷方式,根据提供的元素属性条件逐个提取满足条件的元素,如果数据量太大将会影响性能:[csharp] view plaincopypublic List FindElements(string[] columns, string[] values) { List nodes = null,filterNodes = null; if (columns.Count() != values.Count()) { throw new Exception("条件字段数目和值数目不匹配,无法生成查询条件!"); } //循环逐个查找到满足条件的元素 for (short index = 0; index elements = xmlTable.XPathSelectElements(xTableName + "[@" + columns[index] + "='" + value + "']"); if (elements == null || elements.Count() == 0) return null; else { nodes = elements.ToList(); elements = null; continue; } } if (nodes == null) { return null; } //按条件过滤数据 var data = http://www.xuexi88.com/zhishi/from e in nodes where e.Attribute(atrrName).Value == value select e; filterNodes = data.ToList(); if (filterNodes == null || filterNodes.Count() == 0) return null; nodes = filterNodes; } //根据xpath进行查询 if(nodes==null || nodes.Count() == 0) { return null; } else { return nodes;//.First(); } } 。
【xpath怎么写多个属性】
文章插图
- 电脑没声音怎么弄 电脑没声音怎么办win7
- cf怎么截图 CF游戏中怎么截图
- qq空间访问权限 手机怎么设置qq空间访问权限
- 鱼肉馅饺子怎么做 鱼肉馅饺子做法视频
- 怎么开葡萄酒 怎么开葡萄酒木塞小妙招
- 耸组词和拼音 耸组词和拼音和大写字母
- 洗龙沟是什么意思 洗龙沟是什么意思衣机里面太脏了怎么办
- wow使命召唤怎么做 使命召唤怎么弄
- 文件隐藏了怎么恢复 windows文件隐藏了怎么恢复
- 英雄联盟查战斗力 英雄联盟怎么查战斗力