我对 XML 文件的 linq 查询遇到了一个稍微令人困惑的问题。它按属性值正确返回节点之一 ( GB
)。但是,当我提供不同的属性值时,例如:JE
我收到一个sequence contains no elements
错误,但该元素显然存在于 XML 文档中?
这是我的查询:
return (from n in xml.Descendants("postalCodeData")
where n.Element("postCodeRegex").Attribute("territoryId").Value == isoCode
select n.Element("postCodeRegex").Value).Single().ToString();
以下是一些示例 XML 数据:
<postalCodeData>
<postCodeRegex territoryId="GB" >GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\d{1,4}</postCodeRegex>
<postCodeRegex territoryId="JE" >JE\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}</postCodeRegex>
<postCodeRegex territoryId="GG" >GY\d[\dA-Z]?[ ]?\d[ABD-HJLN-UW-Z]{2}</postCodeRegex>
</postalCodeData>
谁能发现我在这里做错了什么?为什么这适用于GB
其他人而不适用于其他人?