Прочитайте ответ xml, полученный от navison, и свяжите ответ в модели mvc и отобразите в таблице. - PullRequest
2 голосов
/ 09 мая 2019

Мне нужно получить доступ к URL-адресу и получить ответ XML (теги содержат двоеточие в нем), связать ответ в классе модели и отобразить его в HTML-таблице.

Пока что я получил доступ к URL, прочитал xml, и моя проблема в том, что я не могу связать данные в моем классе модели, так как в тегах есть двоеточие, без двоеточия я могу это легко сделать, я прочитал что использование пространства имен - это путь, но я новичок в этом и не могу реализовать логику. Любая помощь будет очень благодарна.

P.S: я использую mvc, c #, просмотр бритвы

          //this will read the url and get back xml response and save it
          string xml = null;
          WebRequest req = WebRequest.Create("my__xml__link__url");
          req.Credentials = CredentialCache.DefaultCredentials;
          WebResponse res = req.GetResponse();
          Stream dataStream = res.GetResponseStream();
          StreamReader reader = new StreamReader(dataStream);
          xml = reader.ReadToEnd();
          reader.Close();
          res.Close();
          int length = 8;
          const string valid = 
          "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
           StringBuilder resz = new StringBuilder();
           Random rnd = new Random();
           while (0 < length--)
           {
            resz.Append(valid[rnd.Next(valid.Length)]);
           }
           string sf = DateTime.Now.ToString();
           string generatedresult = resz.ToString() + "_" + ".xml";
           XmlDocument doc = new XmlDocument();
           try
           {
            doc.LoadXml(xml);
           }
           catch (Exception ex)
           {
             string dgj = ex.ToString();
           }
            doc.Save(@"D:\" + generatedresult + "");


         //this below code to read the data and bind it in the model and 
          //displayit in the html table


        List<CustomerModel> customers = new List<CustomerModel>();
        //Load the XML file in XmlDocument.
        doc.Load(Server.MapPath("~/oWtMRUR8_.xml"));
        foreach (XmlNode node in 
             doc.SelectNodes("/m:propertiesz/m:properties"))
            {
            customers.Add(new CustomerModel
            {
                CustomerId = int.Parse(node["d:No"].InnerText),
                Name = node["d:Description"].InnerText,
                Country = node["d:Type"].InnerText
            });
             }
             return View(customers);

       // I have attached my sample xml code 


      <?xml version="1.0" encoding="utf-8"?>
       <feed xml:base="" xmlns="http://www.w3.org/2005/Atom" xmlns:d="" 
       xmlns:m="">
       <id></id>
    <title type="text">ItemList</title>
       <updated>2019-05-08T12:10:04Z</updated>
     <link rel="self" title="ItemList" href="ItemList" />
              <id></id>
         <category term="NAV.ItemList" scheme="" />
         <link rel="edit" title="ItemList" href="" />
        <title />
           <updated>2019-05-08T12:10:04Z</updated>
           <author>
         <name />
             </author>
            <content type="application/xml">
         <m:properties>
            <d:No>1000</d:No>
             <d:Description>Bicycle</d:Description>
         <d:Type>Inventory</d:Type>
         </m:properties>
         </content>


             <id></id>
             <category term="NAV.ItemList" scheme="" />
              <link rel="edit" title="ItemList" href="" />
           <title />
            <updated>2019-05-08T12:10:04Z</updated>
              <author>
              <name />
              </author>
             <content type="application/xml">
              <m:properties>
              <d:No>1001</d:No>
            <d:Description>Touring Bicycle</d:Description>
            <d:Type>Inventory</d:Type>
            </m:properties>
             </content>

Мне нужно извлечь только содержимое внутри тега d :. Примечание. Я слегка отредактировал образец XML-содержимого из-за соображений конфиденциальности

1 Ответ

0 голосов
/ 11 мая 2019

Вы должны использовать перегруженную версию SelectNodes .Второй параметр должен быть менеджером пространства имен с вашими пространствами имен.

...