Поиск в xml и выбор родительского узла - C#
Формулировка задачи:
как можно в c# сделать, что бы искал по всему документу в элементе "url" например "http://ssilka3.ru" и если нашёл, то брал все данные в этом элементе "offers" и сохранял в другом документе?
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2016-01-29 20:20">
<shop>
<name></name>
<url>http://</url>
<currencies>
<offers>
<offer id="14264216697225531000" available="true" merchant_id="61108" gs_product_key="a4fc22b52dc5a913dd5dcf7de0e3e55adce74e1c" article="9382" gs_category_id="591">
<name><![CDATA[Philips-Avent1 SCF284/03]]></name>
<description><![CDATA[текст]]></description>
<vendor><![CDATA[Philips-]]></vendor>
<model><![CDATA[текст]]></model>
<oldprice></oldprice>
<url>http://ssilka1.ru</url>
<currencyId>RUR</currencyId>
<categoryId>167</categoryId>
<price>7900.00</price>
</offer>
<offer id="11831111219399895000" available="true" merchant_id="61108" gs_product_key="b405fd1804beee2b877a7cdf4d558c842a0d8167" article="21298" gs_category_id="591">
<name><![CDATA[MAM текст]]></name>
<description><![CDATA[текст]]></description>
<vendor><![CDATA[MAM]]></vendor>
<model><![CDATA[текст]]></model>
<oldprice></oldprice>
<url>http://ssilka2.ru</url>
<currencyId>RUR</currencyId>
<categoryId>326</categoryId>
<price>2090.00</price>
</offer>
<offer id="14099211609595558000" available="true" merchant_id="61108" gs_product_key="e0e9ed249eae9342ae3420902ecc2cff94590da8" article="14977" gs_category_id="591">
<name><![CDATA[Philips-Avent Теплоизолирующая сумка SCD150]]></name>
<description><![CDATA[текст]]></description>
<vendor><![CDATA[Philips-Avent]]></vendor>
<model><![CDATA[SCD150]]></model>
<oldprice></oldprice>
<url>http://ssilka3.ru</url>
<currencyId>RUR</currencyId>
<categoryId>352</categoryId>
<price>1610.00</price>
</offer>
Решение задачи: «Поиск в xml и выбор родительского узла»
textual
Листинг программы
public class Program
{
private static void Main(string[] args)
{
Program p = new Program();
p.Run();
Console.WriteLine("\nDone");
Console.ReadKey();
}
private void Run()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(Resource1.XML_Document);
XmlElement root = doc.DocumentElement;
XmlNodeList nodes = root.SelectNodes("offer[url="http://ssilka3.ru"]");
Console.WriteLine("Found: " + nodes.Count);
foreach (XmlElement node in nodes)
{
Console.WriteLine(node.InnerXml);
}
}
}