venkatrao palepu Ответов: 4

Выберите конкретный узел в XML с помощью c#


Привет,

Это XML-код по умолчанию, который у меня есть.

<Name>
<Text>Hi </Text>
<Text>Hello </Text>
<Text>How are you </Text>
</Name>



Не могли бы вы подсказать мне, как выбрать второй "текстовый" узел. Я имею в виду, что хочу напечатать "привет" в качестве вывода.

Спасибо
Венкат.

Rob Philpott

Используйте xquery. Где этот XML? На диске, в XMLDocument, где?

venkatrao palepu

Привет Роб,

Спасибо за быстрый ответ.

У меня есть XML-код в XML-документе. Каждый раз просто я хочу выбрать только второе. не могли бы вы дать несколько предложений, потому что я новичок в этой концепции XML. вот и все.

Спасибо
Венкат.

koolprasadd

Хотите ли вы каждый раз выбирать второй узел или числа могут отличаться ?

venkatrao palepu

Привет Прасад,

Спасибо за быстрый ответ. Каждый раз я хочу выбрать только второй .

Спасибо
Венкат.

Manisha Tambade

вы не можете иметь одно и то же имя тега(как текст) более одного раза в главном узле(как в имени).поэтому сначала вам нужно правильно написать формат xml.

Manisha Tambade

на данный момент Вы можете указать как Text1, Text2, Text3 like.

4 Ответов

Рейтинг:
16

Anuja Pawar Indore

Прочтите это, я надеюсь, что это поможет вам понять XML

http://www.functionx.com/csharp2/xml/Lesson02d.htm[^]


[no name]

Мой 5.

Anuja Pawar Indore

Спасибо Раис :)

Рейтинг:
10

Manisha Tambade

Сначала вы делаете xml как
& lt;?xml version=" 1.0 "encoding=" utf-8"? >
< имя>
< Text1 & gt;Привет & lt; / Text1>
< Text2 & gt;Привет < / Text2>
< Text3> Как дела < / Text3>
< / имя>
Теперь добавьте пространство имен-using System.Xml;
на кнопке нажмите кнопку написать код как-
Класс xmltextreader читатель = новый класс xmltextreader("C:\\Users\\Dell\\Desktop\\Новый folder\\XMLFile1.xml"); / / это будет расположение и имя xml
int i = 0;
в то время как (читатель. читать())
{
переключатель (читатель.Типа)
{
случай XmlNodeType.Элемент: / / узел является элементом.
Ящик для сообщений.Показать ("< " + reader.Name);
// MessageBox.Показать (">");
// MessageBox.Показать (читатель.Ценность);
перерыв;
случай XmlNodeType.Text: / / отображение текста в каждом элементе.
я++;
if (i==2) //2 потому что Hello находится во втором узле.
Ящик для сообщений.Показать (читатель.Value); / / покажет Hello
перерыв;
случай XmlNodeType.EndElement: / / отображение конца элемента.
//Приставка.Напишите("</ " + reader.Name);
// MessageBox.Показать (">");
перерыв;
}
}

По этому образцу вы можете прочитать любой тип xml и получить любой узел, внутренний узел или любой текст xml.
Для новичка это очень важное понятие.


Рейтинг:
1

PBangale

Привет Венкат,

Поскольку вы уже используете c#4.0, попробуйте сделать это с помощью System.Xml.Linq. Это потрясающе....

XDocument xmldoc = XDocument.Синтаксический анализ("<имя&ГТ;&ЛТ;текст&ГТ;Привет&ЛТ;текст&ГТ;Привет&ЛТ;текст&ГТ;как ты");
XElement elResult = xmldoc.Потомки ("Текст").Single(x => (string)x. Value = = " Hello");

Улыбка
Пракаш


hamid18

это жестко закодированное решение. Не могли бы вы предложить общий подход для работы с XML-файлом? Как извлечь второе дочернее содержимое вообще. ?

Рейтинг:
1

Amir Mahfoozi

Вот он :

XmlDocument xd= new XmlDocument();
xd.LoadXml(@"<name>
            <text>Hi </text>
            <text>Hello </text>
            <text>How are you </text>
            </name>");
var result = xd.SelectNodes("/Name/Text");


if ((result!=null) && (result.Count>=2))
    Console.WriteLine(result[1].InnerText);
Console.ReadKey();


Надеюсь, это поможет.


[no name]

Мое условие 5. Reason - Index based имеет больше смысла, поскольку все узлы имеют одно и то же имя.

Amir Mahfoozi

Спасибо :)