C#linq to xml,具有属性的嵌套查询
我真的很努力想要让我的头转过来。C#linq to xml,具有属性的嵌套查询
我正在使用c#。
我想从一个XML文件中找回IEnumerable的产品。
下面是XML结构的样品。
我需要的是具有设置为如真productEnriched自定义属性的产品列表。
有些产品不会有根本
我头上的任何自定义属性部分已经strated伤想到它!
<?xml version="1.0" encoding="UTF-8"?> <catalog xmlns="http://www.mynamespace.com" catalog-id="MvgCatalog">
<product>
<custom-attributes>
<custom-attribute attribute-id="productEnriched">true</custom-attribute>
</custom-attributes>
</product>
</category>
感谢您的帮助
要澄清一些事情我已经增加了一些更多的项目到示例XML
我需要的产品 只是有一个定做的产品列表属性元素用在XML productEnriched属性和真实 一些产品的价值不会有任何自定义属性或自定义属性的元素 一些产品会有,但与假 值我只是需要的地方存在的产品列表一个第二有真正
<?xml version="1.0" encoding="UTF-8"?> <catalog xmlns="http://www.mynamespace.com" catalog-id="MvgCatalog">
<product>
<upc>000000000000</upc>
<productTitle>My product name</productTitle>
<custom-attributes>
<custom-attribute attribute-id="productEnriched">true</custom-attribute>
<custom-attribute attribute-id="somethingElse">4</custom-attribute>
<custom-attribute attribute-id="anotherThing">otherdata</custom-attribute>
</custom-attributes>
</product>
</category>
回答:
我需要的产品清单只显示有与在XML productEnriched属性和真实一些产品价值 一个 定制属性元素的产品不会有任何的值自定义属性或 定制属性的元素有些产品会有,但有值的假 我只是需要的地方存在的产品清单,并具有真正
var xml = XElement.Load(@"your file.xml"); XNamespace ns = "http://www.mynamespace.com";
var products = xml.Elements(ns + "product");
var filtered = products.Where(
product =>
product.Element(ns + "custom-attributes") != null &&
product.Element(ns + "custom-attributes").Elements(ns + "custom-attribute")
.Any(
ca =>
ca.Value == "true" &&
ca.Attribute("attribute-id") != null &&
ca.Attribute("attribute-id").Value == "productEnriched"));
一个 值 顺便说一句,你个XML是无效的 - 你的开始标记(catalog
)不符合您的结束标记(category
)。
本身的格式是奇怪 - 它是你的主意吗?
<custom-attributes> <custom-attribute attribute-id="productEnriched">true</custom-attribute>
<custom-attribute attribute-id="somethingElse">4</custom-attribute>
<custom-attribute attribute-id="anotherThing">otherdata</custom-attribute>
</custom-attributes>
为什么把属性名称作为属性值和属性值作为元素的值?它看起来很臃肿,并且没有明确的目的“重新创建”XML。
为什么不:
<custom-attributes> <custom-attribute productEnriched="true"/>
<custom-attribute somethingElse="4"/>
<custom-attribute anotherThing="otherdata"/>
</custom-attributes>
或者:
<custom-attributes productEnriched="true" somethingElse="4" anotherThing="otherdata"/>
或者仅仅是使用元素:
<product-parameters> <productEnriched>true</productEnriched>
<somethingElse>4</somethingElse>
<anotherThing>otherdata</anotherThing>
</product-parameters>
以上是 C#linq to xml,具有属性的嵌套查询 的全部内容, 来源链接: utcz.com/qa/259606.html