Использование XPath для анализа XML из Web, переход к HTML-форме

#java #html #xml #xpath

#java #HTML #xml #xpath

Вопрос:

У меня возникли трудности с запуском скрипта XPath. Я использую DocumentBuilderFactory для хранения XML-данных с другого веб-сайта на сервере. Моя логика и синтаксис кажутся мне правильными, но скрипт не будет запущен.

Вот ссылка на полный HTML:

https://www.dropbox.com/s/i3u429bn5bjd4i9/orecalculator.txt

     <script language="JavaScript">

import java.net.URL;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.*;
import org.w3c.dom.Document;

    URL url = new URL("http://api.eve-central.com/api/marketstat?typeid=22,17425,17426,1223,17428,17429,1225,17432,17433,1232,17436,17437,1229,17865,17866,21,17440,17441,1231,17444,17445,1226,17448,17449,20,17452,17453,11396,17869,17870,1227,17867,17868,18,17455,17456,1224,17459,17460,1228,17463,17464,19,17466,17467,1230,17470,17471amp;regionlimit=10000002");
    Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(url.openStream());
    XPath xpath = XPathFactory.newInstance().newXPath();

var IDs = [22,17425,17426,1223,17428,17429,1225,17432,17433,1232,17436,17437,1229,17865,17866,21,17440,17441,1231,17444,17445,1226,17448,17449,20,17452,17453,11396,17869,17870,1227,17867,17868,18,17455,17456,1224,17459,17460,1228,17463,17464,19,17466,17467,1230,17470,17471];

calculate = function (i)
{
    var y = document.getElementById('reward'); //to display in reward box
    var x = 0;  
    XPathExpression expr;
    Object resu<
    var elm;
    while (i   1 < IDs.length)
    {
        expr = xpath.compile("//marketstat/type[@id = '"   IDs[i]   "']/buy/max/text()"); //define XPath for each typeID
        result = expr.evaluate(document);
        elm = document.getElementById(IDs[i]);
        x=x parseInt(elm.value||0)*parseInt(result); //multiply the max buy price for this typeID by the number of units entered in the html form
        i  ;
    }
    y.value = x;
};

</script>
  

Цель скрипта — умножить вводимые пользователем данные для каждой формы на соответствующую «максимальную покупку» для идентификатора этого элемента из eve-central XML. Предполагается, что он ведет себя как этот Google Sheet:

https://docs.google.com/spreadsheets/d/1iLxDHFQOfAsiFPSUr0bU1sXyE37dfUdVAXc1xoSzFCc/edit?usp=sharing

Спасибо!

Ответ №1:

Вы не можете просто поместить Java в теги Javascript script внутри HTML-страницы и ожидать, что она запустится. Чтобы это сработало, вам нужно либо переписать свой код на Javascript, либо создать полноценное веб-приложение Java.

Комментарии:

1. Спасибо — мне было интересно, почему Javascript в тегах сценариев имел немного иной синтаксис, чем тот, к которому я привык из полноценной Java. Я попробую один из этих вариантов.