Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / XML, XSL, XPath, XQuery Новый топик    Ответить
 xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
АнтонСФ
Member

Откуда:
Сообщений: 2
Вот есть приблизительно такой xml
<?xml version="1.0" encoding="UTF-8"?>
<xxx:Documents
xmlns:xxx="http://prefix1.ru/" xmlns:yyy="http://prefix2.ru/" >
<xxx:MainTag>
<xxx:Tag1>TEST1</xxx:Tag1>
<xxx:Tag2>TEST1</xxx:Tag2>
<xxx:Tag3>
<yyy:Tag4>TEST3</yyy:Tag4>
</xxx:Tag3>
</xxx:MainTag>
</xxx:Documents>
он приходит от разных людей и каждый считает своим долгом ставит на место префиксов xxx, yyy свои случайные префиксы, точнее за них это делает 1с. Подскажите как вытащить нужные мне элементы, например :
MainTag с namespace-uri:"http://prefix1.ru/"
Tag4 с namespace-uri:"http://prefix2.ru/"

msxml2.DOMDocument60
Set Nodes = xDoc.selectNodes("//*[namespace-uri()=""http://prefix1.ru/""]") - выдергивает всё подряд но работает
Set Nodes = xDoc.selectNodes("//MainTag[namespace-uri()=""http://prefix1.ru/""]") - не выдергивает ничего
а если допустим предположить, что мы префикс знаем, то все равно имеем ошибку
Set Nodes = xDoc.selectNodes("//xxx:MainTag[namespace-uri()=""http://prefix1.ru/""]")
"ссылка на необъявленный префикс пространства имен"

Помогите пожалуйста, с xPath никогда не работал :(
20 май 17, 12:49    [20498263]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5255
SelectionNamespaces Property
Какой там префикс у неймспейса в исходном документе - неважно абсолютно, важны сами namespaspaces URI, то, что будет задано в SelectionNamespaces и, соответственно, в XPath:
<?xml version="1.0" encoding="utf-8"?>
<xxx:Documents xmlns:xxx="http://prefix1.ru/" xmlns:yyy="http://prefix2.ru/">
  <xxx:MainTag>
    <xxx:Tag1>TEST1</xxx:Tag1>
    <xxx:Tag2>TEST2</xxx:Tag2>
    <xxx:Tag3>
      <yyy:Tag4>TEST3</yyy:Tag4>
    </xxx:Tag3>
  </xxx:MainTag>
</xxx:Documents>

var dom = new ActiveXObject("MSXML2.DOMDocument.6.0");
dom.async= false;
dom.validateOnParse = false;
dom.load("D:\\Trash\\1.xml"); // <- вышеприведенный xml
if (dom.parseError.errorCode!=0) 
{
  WScript.Echo("can't load dom" + dom.parseError.reason);
  exit;
}
dom.setProperty("SelectionNamespaces", "xmlns:myprefix='http://prefix1.ru/'");
WScript.Echo(dom.selectSingleNode("/myprefix:Documents/myprefix:MainTag/myprefix:Tag2/text()").xml);

- выводит TEST2.
20 май 17, 14:03    [20498338]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
АнтонСФ
Member

Откуда:
Сообщений: 2
Сон Веры Павловны,
Спасибо большое!!!
20 май 17, 19:48    [20498618]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
vponed
Member

Откуда:
Сообщений: 2
Сон Веры Павловны,
я тоже умоляю о помощи. Тоже с xpath 2 дня знаком.
Пытаюсь вытянуть base64 из кода страницы

<div class="item-phone-big-number js-item-phone-big-number"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAT0AAAAyCAYAAAAuugz8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAMgklEQVR4nO2dfaweRRXGf3PT3DRNbZqmaRrSNJU0lTS1qQoIBOoFKyAhEdGQSgTLh0iQRCRICCEkxCghSho1hhBFKahIS

Что я только не пробовал, комбинировал как угодно, ничего не выходит
//*[contains(@class,'item-phone-big-number js-item-phone-big-number')] так отдает пустоту.
если добавлять /img/@src тоже ничего
6 окт 18, 14:29    [21697008]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11280
vponed
если добавлять /img/@src тоже ничего
Что именно ничего? Код где?
7 окт 18, 20:24    [21697471]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
vponed
Member

Откуда:
Сообщений: 2
_Vasilisk_,
Это страничка с телефоном с авито. Тут дело не в xpath, а в том, что этого содержимого просто не приходило по запросу..
Надо действовать по другому. Прошу прощения за беспокойство.
8 окт 18, 08:20    [21697687]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72963
с авито на скуле давно и безуспешно борцунируют, потому что авито отслеживает скуль и лепит заплатки по горячим следам.
13 окт 18, 23:19    [21703456]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72963
эта боротьба на моих глазах разворачивалась.

пришел некто в раздел js, спросил, как телефон с авито выдернуть. ему подсказали, тогда телефон был текстовый и прятался в невидимом элементе. через несколько дней вернулся - телефон больше не выдергивается. посмотрели - он по кнопке стал через ajax подтягиваться. подсказали, как составить запрос, чтобы телефон получить, ушел довольный. через несколько дней опять вернулся - авито стало отдавать телефон в виде картинки. тут ему объяснили, что условия пользования авито запрещают такую деятельность, и послали нахер.

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

а после этого текста не исключено, что сделает это превентивно и перестает мудрить с никчемными лишними запросами - просто спрячет по старинке в невидимый элемент картинку с искаженным номером телефона.
13 окт 18, 23:49    [21703470]     Ответить | Цитировать Сообщить модератору
 Re: xpath и случайный префикс пространства имен, как вытащить нужный элемент?  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11280
Antonariy
с авито на скуле давно и безуспешно борцунируют
Я когда-то тоже с ним работал. Это был тот случай, когда работа других программистов вызывает уважение
14 окт 18, 20:05    [21703703]     Ответить | Цитировать Сообщить модератору
Все форумы / XML, XSL, XPath, XQuery Ответить