Как прочитать XML элемент со значением пространства имен - PullRequest
0 голосов
/ 22 апреля 2020

У меня проблема с получением значения элемента xml, если у него есть пространство имен. пожалуйста, помогите мне в чем проблема здесь. Моя xml строка ниже

<PurchaseOrder xmlns:aw="http://www.adventure-works.com"> <aw:ShippingAddress> <aw:Name>John</aw:Name> <aw:Street>123 Main St.</aw:Street> <aw:City>Seattle</aw:City> <aw:State>WA</aw:State> <aw:Zip>98113</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> <aw:ShippingAddress> <aw:Name>Chris Preston</aw:Name> <aw:Street>123 Robin St.</aw:Street> <aw:City>Newyork</aw:City> <aw:State>TU</aw:State> <aw:Zip>98113</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> <aw:ShippingAddress> <aw:Name>Charlis</aw:Name> <aw:Street>53 Jacob St.</aw:Street> <aw:City>California</aw:City> <aw:State>DOWNTOWN</aw:State> <aw:Zip>98111</aw:Zip> <aw:Country>USA</aw:Country> </aw:ShippingAddress> </aw:PurchaseOrder>

мой код ниже

XDocument doc = XDocument.Load("PurchaseOrder.xml");
List<PurchaseOrder> listWO = new List<PurchaseOrder>();

 foreach (XElement el in doc.Root.Elements())
{
    if ( el.Elements().Count() > 0)
        {
        PurchaseOrder po = new PurchaseOrder
        {
            Name = el.Elements("aw:Name").First().Value,
            City = el.Elements("aw:City").First().Value,
            Country = el.Elements("aw:Country").First().Value
        };
        listPO.Add(po):
    }
 }

Здесь я не получаю значение каждого "ShippingAddress" мудрым.

1 Ответ

1 голос
/ 22 апреля 2020

См. Изменения ниже:

            XDocument doc = XDocument.Load("PurchaseOrder.xml");
            XNamespace awNs = doc.Root.GetNamespaceOfPrefix("aw");
            List<PurchaseOrder> listWO = new List<PurchaseOrder>();

             foreach (XElement el in doc.Root.Elements())
            {
                if ( el.Elements().Count() > 0)
                    {
                    PurchaseOrder po = new PurchaseOrder
                    {
                        Name = el.Elements(awNs + "Name").First().Value,
                        City = el.Elements(awNs + "City").First().Value,
                        Country = el.Elements(awNs + "Country").First().Value
                    };
                    listPO.Add(po):
                }
             }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...