真的快速检查一下。
我有一个XML文件,我将使用Linq to XML进行搜索。我唯一的问题是,我的用户将提供的XML可以使用长代码标签,也可以使用短代码标签,例如。
<FromPerson>Joe Bloggs</FromPerson>
- 长码
OR
<m175>Joe Bloggs</m175>
- 短代码
以下是我的代码片段,用于说明我当前如何搜索文档(目前仅使用长代码进行搜索):
prod.ProductID = product.Elements("ProductIdentifier").First(t => (t.Element("ProductIDType").Value == "45" || t.Element("ProductIDType").Value == "21")).Element("IDValue").Value;
因此,元素'ProductIdentifier'可以是那个,或'b221'。
只是简单地放置一个IF语句来评估XML标签是长代码还是短代码,然后获取值或是否有更快,更有效的方法来做这个?
答案 0 :(得分:1)
如果您不关心订单,您可以查询两者并加入结果,如下所示:
var results = document.Descendants("ProductIdentifier")
.Union(document.Descendants("b221"));
修改强>
如果您关心元素的顺序,可以使用以下查询:
var results = document.Descendants()
.Where(e => e.Name == "ProductIdentifier" || e.Name == "b221");