我有一个xml如下,
<product>
<ProductId>3</ProductId>
<ProductName>Voice Recognition</ProductName>
</product>
<product>
<ProductId>5</ProductId>
<ProductName>TravelExpert Settings</ProductName>
<ProductAttribute>
<Name>AllowbookIncompleteTraveller</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>CreateTravs</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>MultiPax</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Hotel</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Profile</Name>
<Description>true</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Air</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>TicketDelivery</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Exchange</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Car</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>Itinerary</Name>
<Description>false</Description>
</ProductAttribute>
<ProductAttribute>
<Name>StoredFare</Name>
<Description>false</Description>
</ProductAttribute>
</product>
我需要遍历Product with ProductName =“TravelExpert Settings”,我需要ProductAttribute的值为Name =“Profile”。值是真的。元素的类型是System.Xml.Linq.XElement。
我可以请一点帮忙吗?如果您需要进一步说明,请与我们联系。
非常欣赏它。
谢谢!
答案 0 :(得分:3)
您的XML无效。 XML文档不能包含多个根元素。我认为你的文件看起来像那样:
<products>
<product>
<ProductId>3</ProductId>
<ProductName>Voice Recognition</ProductName>
</product>
<product>
<ProductId>5</ProductId>
<ProductName>TravelExpert Settings</ProductName>
<ProductAttribute>
<Name>AllowbookIncompleteTraveller</Name>
<Description>false</Description>
</ProductAttribute>
<!-- (...) -->
</product>
</products>
您的查询应如下所示:
var xDoc = XDocument.Load("Input.xml");
var valueElement = xDoc.Root
.Elements("product")
.First(p => (string)p.Element("ProductName") == "TravelExpert Settings")
.Elements("ProductAttribute")
.First(pa => (string)pa.Element("Name") == "Profile")
.Element("Description");
var value = (bool)valueElement;