Здравствуйте у меня возник такой вопрос, как из этого 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();
}
Но мне нужна такая функция, которая выводит по заданному атрибуту строку без управляющих символов.
Сперва надо выбрать нужную ноду — и потом у нее взять InnerText.
Или сразу взять нужную текстовую ноду (whatever/text()) через xpath (SelectSingleNode/SelectNodes) и у нее взять Value.
Здравствуйте, Mr.Cat, Вы писали:
MC>Сперва надо выбрать нужную ноду — и потом у нее взять InnerText. MC>Или сразу взять нужную текстовую ноду (whatever/text()) через xpath (SelectSingleNode/SelectNodes) и у нее взять Value.
Я так пробовал, через SelectSingleNode передавал ему нужный мне узел Hint_1, то есть SelectSingleNode("Hint_1"), все равно выводится все те же строки.
Здравствуйте, 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();
}
Здравствуйте, 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;
Здравствуйте, 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 сделать но времени не было, спасибо внесу его в класс, как второй способ, может даже сравню по скорости, если конечно время будет.
Здравствуйте, 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;
}