Выбрать значения из XML-документа - C#
Формулировка задачи:
есть такой вот документ
Как из него выбрать определенные значения? Значения находятся в теге Product
ошибка ссылка на объект не указыват на экземляр, видимо из-за того что тег идет nsocuments, но такой записи ошибка в : не может употребляться в именах
<?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>
если делать вот так
foreach (XElement element in xmldoc.Element("Documents").Elements("Document"))
Решение задачи: «Выбрать значения из 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д