Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 17:20
Оценка:
Здравствуйте у меня возник такой вопрос, как из этого XML-Файла прочитать строку по <Hint_1>, чтобы выводилась только строка в этом узле , ну допустим
"Удаление мусора из системы".

<?xml version="1.0" encoding="utf-8" ?>
<ListOfHints>
<Hint_1>
<Text FontSize="10">Удаление мусора из системы</Text>
</Hint_1>
<Hint_2>
<Text FontSize="10">Защита системы от вторжения</Text>
</Hint_2>
<Hint_3>
<Text FontSize="10">Оптимизация системы</Text>
</Hint_3>
</ListOfHints>

Вот код который загружает все строки из XML-файла:

        public string LoadHintFromXml()
        {
            System.Xml.XmlDocument Doc = new System.Xml.XmlDocument();

            Doc.Load("XMLHint.xml");

            return Doc.InnerText.ToString();               
        }


Но мне нужна такая функция, которая выводит по заданному атрибуту строку без управляющих символов.

Заранее спасибо.
С уважением!
Re: Чтение строки из XML
От: Mr.Cat  
Дата: 02.10.09 17:32
Оценка: 3 (1)
Сперва надо выбрать нужную ноду — и потом у нее взять InnerText.
Или сразу взять нужную текстовую ноду (whatever/text()) через xpath (SelectSingleNode/SelectNodes) и у нее взять Value.
Re[2]: Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 17:36
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Сперва надо выбрать нужную ноду — и потом у нее взять InnerText.

MC>Или сразу взять нужную текстовую ноду (whatever/text()) через xpath (SelectSingleNode/SelectNodes) и у нее взять Value.

Я так пробовал, через SelectSingleNode передавал ему нужный мне узел Hint_1, то есть SelectSingleNode("Hint_1"), все равно выводится все те же строки.
С уважением!
Re[3]: Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 17:45
Оценка:
Здравствуйте, Xobotik, Вы писали:

X>Здравствуйте, Mr.Cat, Вы писали:


MC>>Сперва надо выбрать нужную ноду — и потом у нее взять InnerText.

MC>>Или сразу взять нужную текстовую ноду (whatever/text()) через xpath (SelectSingleNode/SelectNodes) и у нее взять Value.

X>Я так пробовал, через SelectSingleNode передавал ему нужный мне узел Hint_1, то есть SelectSingleNode("Hint_1"), все равно выводится все те же строки.


Все получилось, вот код

    public string LoadHintFromXml()
        {
            System.Xml.XmlDocument Doc = new System.Xml.XmlDocument();

            Doc.Load("XMLHint.xml");

            System.Xml.XmlNode elem = Doc.DocumentElement.SelectSingleNode("Hint_1");

            return elem.InnerText.ToString();
        }


Спасибо за ссылку
С уважением!
Re: Чтение строки из XML
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 02.10.09 17:48
Оценка: 3 (1)
Здравствуйте, Xobotik, Вы писали:

X>Здравствуйте у меня возник такой вопрос, как из этого XML-Файла прочитать строку по <Hint_1>, чтобы выводилась только строка в этом узле , ну допустим

X>"Удаление мусора из системы".

Можно покрасивее с помощью LINQ 2 Xml

System.Xml.Linq.XDocument doc = XDocument.Load("1.xml");
string text = doc.Descendants("Hint_1").Descendants("Text").Single().Value;
Re[2]: Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 17:51
Оценка:
Здравствуйте, SergeyT., Вы писали:

ST>Здравствуйте, Xobotik, Вы писали:


X>>Здравствуйте у меня возник такой вопрос, как из этого XML-Файла прочитать строку по <Hint_1>, чтобы выводилась только строка в этом узле , ну допустим

X>>"Удаление мусора из системы".

ST>Можно покрасивее с помощью LINQ 2 Xml


ST>
ST>System.Xml.Linq.XDocument doc = XDocument.Load("1.xml");
ST>string text = doc.Descendants("Hint_1").Descendants("Text").Single().Value;
ST>


ух ты круто думал тоже через LINQ сделать но времени не было, спасибо внесу его в класс, как второй способ, может даже сравню по скорости, если конечно время будет.
С уважением!
Re[2]: Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 18:04
Оценка:
Здравствуйте, SergeyT., Вы писали:

ST>Здравствуйте, Xobotik, Вы писали:


X>>Здравствуйте у меня возник такой вопрос, как из этого XML-Файла прочитать строку по <Hint_1>, чтобы выводилась только строка в этом узле , ну допустим

X>>"Удаление мусора из системы".

ST>Можно покрасивее с помощью LINQ 2 Xml


ST>
ST>System.Xml.Linq.XDocument doc = XDocument.Load("1.xml");
ST>string text = doc.Descendants("Hint_1").Descendants("Text").Single().Value;
ST>


Только тут немного по другому надо, чтобы работало:

        public string LoadHintFromXml2(string xmlDocument, string textNode)
        {
            System.Xml.Linq.XDocument doc = System.Xml.Linq.XDocument.Load(xmlDocument);

            var text = doc.Descendants(textNode).Single().Value;

            return text;
        }


Descendants второго не надо.
С уважением!
Re[2]: Чтение строки из XML
От: Lloyd Россия  
Дата: 02.10.09 19:17
Оценка: 3 (1) +2
Здравствуйте, SergeyT., Вы писали:

ST>Можно покрасивее с помощью LINQ 2 Xml


ST>
ST>System.Xml.Linq.XDocument doc = XDocument.Load("1.xml");
ST>string text = doc.Descendants("Hint_1").Descendants("Text").Single().Value;
ST>


Имхо, со старым XmlDocument-ом таки красивше:
doc.SelectSingleNode("/ListOfHints/Hint_1/Text/").InnerText;

Re[3]: Чтение строки из XML
От: Xobotik Россия  
Дата: 02.10.09 20:17
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, SergeyT., Вы писали:


ST>>Можно покрасивее с помощью LINQ 2 Xml


ST>>
ST>>System.Xml.Linq.XDocument doc = XDocument.Load("1.xml");
ST>>string text = doc.Descendants("Hint_1").Descendants("Text").Single().Value;
ST>>


L>Имхо, со старым XmlDocument-ом таки красивше:

L>
L>doc.SelectSingleNode("/ListOfHints/Hint_1/Text/").InnerText;
L>

L>

В одну строчку =) Вот это да ... )) Надо было тему сообщения назвать "Красивое чтение из XML") Спасибо за способ.
С уважением!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.