Выбрать значения из XML-документа - C#

Узнай цену своей работы

Формулировка задачи:

есть такой вот документ
<?xml version="1.0"?>
 
-<ns:Documents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:iab="http://fsrar.ru/WEGAIS/ActInventoryABInfo">

-<ns:Owner>
 
<ns:FSRAR_ID>030000008491</ns:FSRAR_ID>
 
</ns:Owner>

-<ns:Document>

-<ns:WayBill>
 
<wb:Identity>c2669b8f-db8c-11e5-82ca-448a5bb9f03c</wb:Identity>

-<wb:Header>
 
<wb:Type>WBInvoiceFromMe</wb:Type>
 
<wb:UnitType>Packed</wb:UnitType>
 
<wb:NUMBER>Е0000002836</wb:NUMBER>
 
<wb:Date>2016-02-03</wb:Date>
 
<wb:ShippingDate>2016-02-03</wb:ShippingDate>

-<wb:Transport>
 
<wb:TRAN_TYPE/>
 
<wb:TRAN_COMPANY/>
 
<wb:TRAN_CAR/>
 
<wb:TRAN_TRAILER/>
 
<wb:TRAN_CUSTOMER/>
 
<wb:TRAN_DRIVER/>
 
<wb:TRAN_LOADPOINT/>
 
<wb:TRAN_UNLOADPOINT/>
 
<wb:TRAN_REDIRECT/>
 
<wb:TRAN_FORWARDER/>
 
</wb:Transport>

-<wb:Shipper>
 
<oref:ClientRegId>030000008491</oref:ClientRegId>
 
<oref:FullName>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ЕВРАЗИЯ"</oref:FullName>
 
<oref:ShortName>ООО "ЕВРАЗИЯ"</oref:ShortName>
 
<oref:INN>2624801990</oref:INN>
 
<oref:KPP>262401001</oref:KPP>

-<oref:address>
 
<oref:Country>643</oref:Country>
 
<oref:Index>0</oref:Index>
 
<oref:RegionCode>26</oref:RegionCode>
 
<oref:description>Россия, 356800,СТАВРОПОЛЬСКИЙ край,ПРОМЫШЛЕННАЯ ул,БУДЕННОВСК г,ДОМ 2 ,</oref:description>
 
</oref:address>
 
</wb:Shipper>

-<wb:Consignee>
 
<oref:ClientRegId>030000213309</oref:ClientRegId>
 
<oref:FullName>ИП ПОПОВ АЛЕКСЕЙ ВЛАДИМИРОВИЧ</oref:FullName>
 
<oref:ShortName>ИП ПОПОВ АЛЕКСЕЙ ВЛАДИМИРОВИЧ</oref:ShortName>
 
<oref:INN>262400296631</oref:INN>

-<oref:address>
 
<oref:Country>643</oref:Country>
 
<oref:Index>0</oref:Index>
 
<oref:RegionCode>26</oref:RegionCode>
 
<oref:description>356800, Ставропольский край, Буденновский р-н, Буденновск г, Интернациональная ул, дом № 239</oref:description>
 
</oref:address>
 
</wb:Consignee>

-<wb:Supplier>
 
<oref:ClientRegId>030000008491</oref:ClientRegId>
 
<oref:FullName>ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ "ЕВРАЗИЯ"</oref:FullName>
 
<oref:ShortName>ООО "ЕВРАЗИЯ"</oref:ShortName>
 
<oref:INN>2624801990</oref:INN>
 
<oref:KPP>262401001</oref:KPP>

-<oref:address>
 
<oref:Country>643</oref:Country>
 
<oref:Index>0</oref:Index>
 
<oref:RegionCode>26</oref:RegionCode>
 
<oref:description>Россия, 356800,СТАВРОПОЛЬСКИЙ край,ПРОМЫШЛЕННАЯ ул,БУДЕННОВСК г,ДОМ 2 ,</oref:description>
 
</oref:address>
 
</wb:Supplier>
 
<wb:Base/>
 
<wb:Note/>
 
</wb:Header>

-<wb:Content>

-<wb:Position>

-<wb:Product>
 
<pref:Type>АП</pref:Type>
 
<pref:FullName>Пивной напиток ароматизированный "ТЕН СТРАЙК ДАРК (TEN STRIKE DARK)"</pref:FullName>
 
<pref:ShortName>Пивной напиток ароматизированный "ТЕН СТРАЙК ДАРК (TEN STRIKE DA</pref:ShortName>
 
<pref:AlcCode>0035817000001287327</pref:AlcCode>
 
<pref:Capacity>0.5</pref:Capacity>
 
<pref:AlcVolume>6.7</pref:AlcVolume>

+<pref:Producer>

<pref:ProductVCode>520</pref:ProductVCode>
 
</wb:Product>
 
<wb:Quantity>72</wb:Quantity>
 
<wb:Price>70.5</wb:Price>
 
<wb:Identity>1</wb:Identity>

+<wb:InformA>

+<wb:InformB>

</wb:Position>
 
</wb:Content>
 
</ns:WayBill>
 
</ns:Document>
 
</ns:Documents>
Как из него выбрать определенные значения? Значения находятся в теге Product
если делать вот так
foreach (XElement element in xmldoc.Element("Documents").Elements("Document"))
ошибка ссылка на объект не указыват на экземляр, видимо из-за того что тег идет nsocuments, но такой записи ошибка в : не может употребляться в именах

Решение задачи: «Выбрать значения из XML-документа»

textual
Листинг программы
var namespaces = new XmlNamespaceManager(new NameTable());
namespaces.AddNamespace("wb", "http://fsrar.ru/WEGAIS/TTNSingle");
namespaces.AddNamespace("pref", "http://fsrar.ru/WEGAIS/ProductRef");
namespaces.AddNamespace("oref", "http://fsrar.ru/WEGAIS/ClientRef");
namespaces.AddNamespace("ns", "http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01");
namespaces.AddNamespace("iab", "http://fsrar.ru/WEGAIS/ActInventoryABInfo");
 
var doc = XDocument.Load("input.xml");
var products = doc.XPathSelectElements("/ns:Documents/ns:Document/ns:WayBill/wb:Content/wb:Position/wb:Product", namespaces);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы