1
我需要通过忽略大小写来获取使用来自xml下的XPath的<aw:Child1>
元素。使用XPathSelectElements不区分大小写的元素选择
<aw:Root xmlns:aw='http://www.test-works.com'>
<aw:Child uid='Test1'>child one data 1</aw:Child>
<aw:Child uid='Test2'>child one data 2</aw:Child>
<aw:Child uid='Test3'>child one data 3</aw:Child>
</aw:Root>
这里是我的代码,但它不会返回任何元素:
string markup = @"
<aw:Root xmlns:aw='http://www.test-works.com'>
<aw:Child uid='Test1'>child one data 1</aw:Child>
<aw:Child uid='Test2'>child one data 2</aw:Child>
<aw:Child uid='Test3'>child one data 3</aw:Child>
</aw:Root>";
var reader = XmlReader.Create(new StringReader(markup));
var root = XElement.Load(reader);
var nameTable = reader.NameTable;
var namespaceManager = new XmlNamespaceManager(nameTable);
namespaceManager.AddNamespace("aw", "http://www.test-works.com");
var inputQuery = "./aw:Child[@uid='test1']"; //Auto generated
var elements = root.XPathSelectElements(inputQuery, namespaceManager);
foreach (var el in elements)
Console.WriteLine(el);
我得到的结果时,我将路径更改为正确的情况下
var inputQuery = "./aw:Child[@uid='Test1']";
但是相匹配的元素动态生成,并且始终为小写。有没有办法在匹配元素时忽略大小写?
Xml是区分大小写的,为什么你要以不区分大小写的方式选择元素?无论如何,你可以选择所有的元素(即在这种情况下使用'/ */*')并检查'foreach'循环中的名称/过滤器。 – Pawel