Member 13990122 Ответов: 1

Returen группа узлов XML в качестве объекта


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

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

[WebMethod]
        public  book  find(string id)
        {
            
            XElement xelement = XElement.Load("books.xml");

           
            IEnumerable<XElement> listOfBooks = xelement.Elements();
        
            
            
            foreach (var _books in listOfBooks)
            {
                if(_books.Element("title").Value==id )
                {
                    this._book.genre= _books.Element("genre").Value;
                  
                    this._book.title= _books.Element("title").Value;
                    this._book.description= _books.Element("description").Value;                  
                }
               
            }
            return _book;

И в моей основной форме
BooksSoapClient obj;
        public Form1()
        {
            
            InitializeComponent();
            obj = new BooksSoapClient();
        }
     

        private void button1_Click(object sender, EventArgs e)
        {

            book bk=(book) obj.find(textBox1.Text);
            label1.Text = bk.author;
        }

[no name]

Вам нужно все значение узла xml?

Member 13990122

да, я могу получить значения, но я хотел вернуть группу узлов в качестве объекта !
но проблема не в том, как повторно использовать объект .
забронировать БК=(забронировать) в obj.найти(элемент textbox1.Текст);

[no name]

Попробуйте следующий код, который вернет список объектов узла

Member 13990122

Спасибо , но все равно это не проблема,
если вы посмотрите на мой код, как я предполагаю повторно использовать obj, который был возвращен из функции find.

Member 13990122

нет только то что соответствует моему удостоверению личности
затем верните все как obj , но не смог понять, как повторно использовать obj

F-ES Sitecore

Каждый раз, когда вы получаете сообщение об ошибке, всегда сообщайте, что это за сообщение и в какой строке оно появляется, это обычно жизненно важно для диагностики и решения проблемы.

1 Ответов

Рейтинг:
2

Sk Imad

Попробуй с этим. Он даст всем узлам имя и значение узла.

<?xml version="1.0" encoding="utf-8" ?>
<placeholders>
	<JobCode>Enter job code</JobCode>
	<ParentJobCode>Enter parent job code</ParentJobCode>
	<Name>Enter name</Name>
	<JobType>Select job type</JobType>
	<MonitorInterval>Enter monitor interval</MonitorInterval>
	<ThreadSleepTime>Enter thread sleep time</ThreadSleepTime>
	<NoOfThread>Enter no of thead</NoOfThread>
	<TimeZoneDifference>Enter time zone</TimeZoneDifference>
	<Remarks>Enter remark</Remarks>
	<SMTPServer>Enter SMTP server</SMTPServer>
	<EmailBody>Enter email body</EmailBody>
	<SendInterval>Enter send interval</SendInterval>
	<NoOfTimes>Enter no of times</NoOfTimes>
</placeholders>




 public class GenericModel
 {
    public string NodeName{ get; set; }
    public string NodeValue { get; set; }
 }




List<GenericModel> placeHolder = new List<GenericModel>();
XmlDocument doc = new XmlDocument();
            doc.Load(HttpContext.Current.Server.MapPath("~/Content/Help/placeholder.xml"));
  XmlElement root = doc.DocumentElement;
  XmlNodeList nodes = root.SelectNodes("/placeholders");
    foreach (XmlNode node in nodes)
    {
       foreach (XmlNode child in node.ChildNodes)
       {
          placeHolder.Add(new GenericModel()
          {
              NodeName = child.Name,
              NodeValue = child.InnerText
          });
       }
    }

var obj= placeHolder.Find(r => r.NodeName== textBox1.Text);


Member 13990122

привет спасибо за ответ я могу собрать какие узлы , как объект, как я написал выше ,
но не смог повторно использовать объект , когда я вызываю obj.find(textBox1.Text);, я нахожу свои узлы, но все еще не могу взять их копьем.

[no name]

Я улучшил решение. Пожалуйста, проверьте.
var obj= заполнитель.Find(r => r.NodeName== textBox1.Text)
Это даст вам объект.

Member 13990122

именно так ,
если у меня есть список объектов, телохранители,
и верните список ! как я могу повторно использовать его , получить параметр списка!?

[no name]

У вас есть список объектов. Вы хотите найти конкретный объект из списка. Тогда просто используйте этот linq.
var obj= заполнитель.Find(r => r.NodeName== textBox1.Text)

Member 13990122

[WebMethod]
публичный список<string> find(string id)
{

XElement xelement = XElement.Нагрузка("books.xml");


Интерфейс IEnumerable&ЛТ;элемент XElement&ГТ; listOfBooks = элемент XElement.Элементы();
var retList = новый список<string>();
foreach (var _books в listOfBooks)
{
если(_books.Элемент("название").Значение==id )
{
//this._book.genre= _books.Элемент("жанр").Ценность;
retList.Add(_books.Элемент("жанр").Ценность);
retList.Add(_books.Элемент("название").Ценность);
retList.Add(_books.Элемент("описание").Ценность);
//this._book.title= _books.Элемент("название").Ценность;
//this._book.description= _books.Элемент("описание").Ценность;
}

}
возврат ретлиста;

}