Как изменить конкретное значение в html через jsoup - PullRequest
0 голосов
/ 25 сентября 2018

Вот мой код:

Elements parents = doc.select("input[value]");
for (Element parent : parents) {
    System.out.println(
        parent.attr("value")
            .replace("X70xAkOaaAeWGxNgWnTJolmy6/FFoFaBD47IzyBYWf4=", "Ranjan")
            .replace("17572418", "17572418123")
            .replace("200", "199")
            .replace("2018-09-13T16:28:28Z", "2018-09--5T16:28:28Z")
            .replace("2018-09-17", "2018-09-25")
    );
}

Но когда я печатаю System.out.println(doc);, вместо этого печатается то же самое старое значение, я должен получить измененное.Как изменить определенное значение, которое находится под входным тегом?

РЕДАКТИРОВАТЬ:

У меня есть следующий HTML:

<input type="hidden" name="sessionValidity" value="2018-09-13T16:28:28Z">
<input type="hidden" name="shipBeforeDate" value="2018-09-17"> 
<input type="hidden" name="merchantReturnData" value=""> 
<input type="hidden" name="shopperLocale" value="en_GB"> 
<input type="hidden" name="skinCode" value="Ce0xkMuQ"> 
<input type="hidden" name="merchantSig" value="X70xAkOaaAeWGxNgWnTJolmy6/FFoFaBD47IzyBYWf4=">

1 Ответ

0 голосов
/ 25 сентября 2018

Я не знаком с Jsoup, но похоже, что вы не меняете значение атрибутов.Element.attr(String s) возвращает строку.Я предполагаю, что вы хотели использовать public Element attr (String attributeKey, String attributeValue) .

Затем вы используете public String replace (CharSequence target, CharSequence замену) , которыйне изменяет саму строку (строка неизменна, replace возвращает новую строку)

Я думаю, что вы хотите сделать это вместо этого:

private static String html = 
    "<input type=\"hidden\" name=\"sessionValidity\" value=\"2018-09-13T16:28:28Z\">\n" +
    "<input type=\"hidden\" name=\"shipBeforeDate\" value=\"2018-09-17\"> \n" +
    "<input type=\"hidden\" name=\"merchantReturnData\" value=\"\"> \n" +
    "<input type=\"hidden\" name=\"shopperLocale\" value=\"en_GB\"> \n" +
    "<input type=\"hidden\" name=\"skinCode\" value=\"Ce0xkMuQ\"> \n" +
    "<input type=\"hidden\" name=\"merchantSig\" value=\"X70xAkOaaAeWGxNgWnTJolmy6/FFoFaBD47IzyBYWf4=\">";

public static void main(String[] args) {
    Document doc = Jsoup.parse(html);
    doc.select("input[name$=merchantSig]").attr("value", "Ranjan");
    // and the other ones
    System.out.println(doc.html());

}

, который печатает

<html>
    <head></head>
    <body>
        <input type="hidden" name="sessionValidity" value="2018-09-13T16:28:28Z">
        <input type="hidden" name="shipBeforeDate" value="2018-09-17">
        <input type="hidden" name="merchantReturnData" value="">
        <input type="hidden" name="shopperLocale" value="en_GB">
        <input type="hidden" name="skinCode" value="Ce0xkMuQ">
        <input type="hidden" name="merchantSig" value="Ranjan">
    </body>
</html>

Вы можете видеть, что значение merchantSig было изменено

...