SujataJK Ответов: 1

Как читать данные XML-файла в ASP.NET веб-приложение


Всем привет,
здесь я хочу прочитать xml файл data.Xml файл - это набор пользователей, где каждый пользователь имеет имя пользователя и права на модули.Здесь я хочу, чтобы список выбранных модулей пользователей, используя который я могу включить и отключить asp. menu.

Пожалуйста, помогите мне.
заранее спасибо..

Что я уже пробовал:

следующий код используется для чтения xml-файла

private void LoadXmlData()
       {
           XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.Load(Server.MapPath("~/App_Data/UserRights.xml"));

           UName = xmlDoc.GetElementsByTagName("LoginName");
           ModulList = xmlDoc.GetElementsByTagName("Modules");

          foreach(XmlNode userNode in  UName)
          {
              if (userNode.InnerText == Session["UserName"].ToString())
               {
                   Response.Write("UserVame="+userNode.InnerText);
                   foreach (XmlNode moduleNode in ModulList)
                   {
                       Modules.Add(moduleNode.InnerText);

                   }

               }
           }

       }



это показывает мне список всех модулей пользователей.

это мой xml файл
<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Rights>
    <Right>
      <LoginName>Kundan.Khadapkar</LoginName>
      <Modules>Inter-Location Transfer</Modules>
    </Right>
    <Right>
      <LoginName>Kundan.Khadapkar</LoginName>
      <Modules>FileDownloder</Modules>
    </Right>

    
    <Right>
      <LoginName>Kundan.Khadapkar</LoginName>
      <Modules>Item Master</Modules>
    </Right>
    <Right>
      <LoginName>Pranaysail</LoginName>
      <Modules>Inter-Location Transfer</Modules>
    </Right>

    <Right>
      <LoginName>Pranaysail</LoginName>
      <Modules>UpLoadDownloadSetup</Modules>
    </Right>
    <Right>
      <LoginName>Abhijit.Adik</LoginName>
      <Modules>Inter-Location Transfer</Modules>
    </Right>
    <Right>
      <LoginName>Abhijit.Adik</LoginName>
      <Modules>FileDownloder</Modules>
    </Right>
  </Rights>
</Root>



Здесь мне нужен только список модулей выбранных пользователей..

SujataJK

Кто-нибудь, пожалуйста, помогите мне...

1 Ответов

Рейтинг:
1

Wessel Beulink

Вы хотите использовать appendChild для создания нового дочернего элемента в текущем файле.
Я не вижу модулей, которые думают, что это список или что-то в этом роде.

private void LoadXmlData()
       {
           XmlDocument xmlDoc = new XmlDocument();
           xmlDoc.Load(Server.MapPath("~/App_Data/UserRights.xml"));
           var userList = new list(of string, string)
           var nodes = (xmlDoc.GetElementsByTagName("Rights")[0]).GetElementsByTagName("Right");

           foreach (node in nodes)
           {
               var login = node.GetElementsByTagName("UserName")[0];
               var module = node.GetElementsByTagName("Modules")[0];

               // this is what you would like to do instead of write appendChild
               newNode = xmlDoc.createElement("UserVame");
               node.GetElementsByTagName("Modules")[0].appendChild(newNode)

               //you can save it if needed
               userList.add(login, module)
           }
       }


SujataJK

спасибо @Wessel

но следующая строка показывает ошибки
//я думаю, что ошибка замедления в var userlist
var userList = новый список (of string, string)

var nodes = (xmlDoc.GetElementsByTagName ("Права") [0]).GetElementsByTagName ("Правильно");

Wessel Beulink

Дублированная запись?

SujataJK

я не могу понять, о чем вы спрашиваете.

Wessel Beulink

Вам нужно импортировать дженерики это дженерик.список удалить те строки, Если вы не хотите, чтобы сохранить те ценности

SujataJK

Теперь он показывает ошибку при
var nodes = (xmlDoc.GetElementsByTagName ("Права") [0]).GetElementsByTagName ("Правильно");

Wessel Beulink

В чем заключается ошибка, которую он вам показывает?

SujataJK

Системная Ошибка 1'.В формате XML.Руководство' не содержит определение для 'метод getelementsbytagname' метод getelementsbytagname, а не метод расширения'', принимающий первый аргумент типа 'System.В формате XML.Руководство' может быть найден (пропущена директива using или ссылка на сборку?) D:\SujataShare\JKViasion17042017\JKVision\JKVision\Site.Master. cs 65 68 JKVision

Wessel Beulink

Извините мой плохой. Вам нужно определить тип массива zero GetElementsByTagName ("UserName") [0]; 'обновленное решение'.

SujataJK

ты имеешь в виду вот так
var nodes = (xmlDoc.GetElementsByTagName ("Имя Пользователя") [0]);

Wessel Beulink

да

SujataJK

Хорошо.