powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML - XPath
11 сообщений из 11, страница 1 из 1
XML - XPath
    #33242191
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
как получить выражение XPath, для конкретного узла XML документа
...
Рейтинг: 0 / 0
XML - XPath
    #33242964
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
наверное криво задал вопрос. поясню зачем надо:
необходимо получить путь (xpath) для конокретного узла (XMLElement) в заданом XMLDocument

пс. извините за оффтоп
...
Рейтинг: 0 / 0
XML - XPath
    #33243381
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
более конкретно поясню:
есть XMLElement, принаделжащий XMLDocument. Необходимо для этого элемента найти такой строковый идентификатор, что бы была возможность получить этот же элемент из документа по нему...
...
Рейтинг: 0 / 0
XML - XPath
    #33243390
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
я понимаю что RTFM, но ж... со временем, поверхностное знакомство в msdn не особо помогло, так что решил обратиться за помощью к людям знающим.. надеюсь такие присутствуют
...
Рейтинг: 0 / 0
XML - XPath
    #33243676
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё раз медленно объясните чего хочется. Желательно с куском кода.
...
Рейтинг: 0 / 0
XML - XPath
    #33244524
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот пример, но могут ошибки быть, м.б. я не учел всех возможных вариантов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
protected override void OnLoad(EventArgs e)
		{

			string str = 
			"<root>" + 
				">"2\"/root/node1[1]/@att1"1\">" +
					"<target>val</target>" + 
				 "</node1>" + 
				"<node1 att1=\"12\" att2=\"21\">" +
					"<node1 att1=\"12\" att2=\"21\">" +
						"<target>val</target>" + 
					"</node1>" + 
					"<node1 att1=\"12\" att2=\"21\">" +
						"<target>val</target>" + 
					"</node1>" + 
				"</node1>" + 
			"</root>";
			
			XmlDocument doc = new XmlDocument();
			doc.LoadXml(str);

			XmlNode node1 = doc.SelectSingleNode("/root/node1[1]/target[1]");
			XmlNode node2 = doc.SelectSingleNode("/root/node1[1]/@att1");
			XmlNode node3 = doc.SelectSingleNode("/root/node1[1]/@att2");
			XmlNode node4 = doc.SelectSingleNode("/root/node1[2]/node1[2]/target[1]");
			XmlNode node5 = doc.SelectSingleNode("/root/node1[2]/node1[1]/@att1");	
			XmlNode node6 = doc.SelectSingleNode("/root/node1[2]/node1[2]/@att2");
			 
			Debug.WriteLine(GetPath(node1));
			Debug.WriteLine(GetPath(node2));
			Debug.WriteLine(GetPath(node3));
			Debug.WriteLine(GetPath(node4));
			Debug.WriteLine(GetPath(node5));
			Debug.WriteLine(GetPath(node6));

			base.OnLoad (e);
		}
	
		private string GetPath(XmlNode node)
		{

			StringBuilder sb = new StringBuilder();
			XmlNodeList anc = node.SelectNodes("ancestor-or-self::node()");

			int count = anc.Count;

			if (count >  0 )
			{
				sb.Append("/");
			}

			for(int i =  1 ; i < count; i++)
			{

				int order =  1 ;

				XmlNode ps = anc[i].PreviousSibling;

				for (; ps != null; ps = ps.PreviousSibling)
				{
					order++;
				}

				if(anc[i].NodeType == XmlNodeType.Element)
				{
					sb.Append(anc[i].Name);
					if(i !=  1 )
					{
						sb.Append("[" + order + "]");
					}
					if(i != (count- 1 ))
					{
						sb.Append("/");
					}
				}
				else
				{
					sb.Append("@" + anc[i].Name);
				}
			}
		
			return sb.ToString();
		}
...
Рейтинг: 0 / 0
XML - XPath
    #33244528
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сэмпл немного изудовало при добавлении, я не виноват, думаю и так ясно
...
Рейтинг: 0 / 0
XML - XPath
    #33244557
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
greenapple, круто, только я был уверен что есть готовая функция для получения пути...
огромное спасибо, на первый взгляд то что надо.
...
Рейтинг: 0 / 0
XML - XPath
    #33244560
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
да, еще вопросик (дабы не плодить офтоных тем спрошу здесь):
есть ли для xml функция на подобее HtmlEncode/UrlEncode что бы записать зарезервированные символы
...
Рейтинг: 0 / 0
XML - XPath
    #33246858
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, такой функции нет, да и зачем, путь суть относительно конкретного узла, в данном случае абсолютного пути - корня. Т.е. эта функция вернет абсолютный путь с использованием proximity position в качестве предикатов, а путей на самом деле гораздо больше.

если использовать свойство InnerText, то там кодируются символы,
можно использовать те же HtmlEncode, HTML тоже XML,
а если не поможет, вставлять в CDATA секцию
...
Рейтинг: 0 / 0
XML - XPath
    #33247160
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
greenapple, еще раз спасибо за разъяснения
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML - XPath
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]