为了账号安全,请及时绑定邮箱和手机立即绑定

如何将带有 HTML 标签的字符串放入数组或列表中?

如何将带有 HTML 标签的字符串放入数组或列表中?

慕后森 2022-11-02 17:22:05
我有一个字符串,其中包含一些 html 标签,并且一个字符串中有多个数据。我需要检查 UI 上的元素是否存在于该字符串中。我能够删除标签,但我不确定如何将字符串转换为数组或列表,以便更容易比较。例如,来自数据库的字符串是:<dl style="float: left; text-align: left; width: 50%;"> <dt>     Note1amp;M </dt> <dd>     - This is an example </dd> <dt>     Note2 </dt> <dd>     - Example 2 </dd> <dt>     Note 3 </dt> <dd>      - This is example 3 </dd>来自ui的文本是Note1 - This is an example其中 Note1 是一个元素这是一个例子是另一个元素到目前为止,我必须删除标签并尝试放入列表public String[] verifyData(Strint txtFromDB) {        String[] txt = new String[3];        boolean compareValue1 = false, compareValue2 = false;        boolean boolBack = false;        WebElement abbreviation = driver.findElement(By.xpath(itemLocatorP1));        WebElement fullName = driver.findElement(By.xpath(itemLocatorP2));        String p1, p2;        if((abbreviation.isDisplayed()) && (fullName.isDisplayed())) {            try {                getMenu().scroll_To_View_Web_Element(itemLocatorP1);                p1 = getUITxt(itemLocatorP1); // getting a text from the UI;                getMenu().scroll_To_View_Web_Element(itemLocatorP2);                p2 = getUITxt(itemLocatorP2); // getting the second part text from the UI:                 txt[0] = p1; //  Note 1                txt[1] = p2; // - This is an example                System.out.println("Array txt -> " + txt[0]);            }            catch(Exception e) {                txt[0] = "Blank";                System.out.println("Array txt Exception-> " + txt[0]);            }所以我想要做的是<dt>Note1</dt> and <dd>-This is an example</dd>作为一个字符串,比如:Note 1 - This is an example在一个列表或数组中,这样我就可以与 UI 上的任何数据进行比较。
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

用JSoup


您可以考虑使用 JSoup,而不是自己解析它。


https://en.wikipedia.org/wiki/Jsoup


使用 JSoup,您可以删除所有 html 并通过以下方式获取文本:


String html = "<p>example</p>";

Document doc = Jsoup.parse(html);

System.out.println(doc.text()); // doc.text() returns the text only from the html

这将输出:


example

使用 JSoup,您还可以找到具有特定 id 的元素,以便更轻松地将它们分开。


String html = "<dt>example</dt>";

Document doc = Jsoup.parse(html);

Elements dts = doc.getElementsByClass("dt");


查看完整回答
反对 回复 2022-11-02
?
慕仙森

TA贡献1827条经验 获得超7个赞

有点想通了,根据双线拆分字符串,然后将其存储在一个列表中,并检查我需要验证的元素是否包含在该列表中


public void verifyEachCommonAcronymsAndAbbreviationsForAPB(String itemLocatorP1, String itemLocatorP2, String txtFromDB) {

        String[] txt = new String[3];

        boolean compareValue1 = false, compareValue2 = false;

        WebElement abbreviation = driver.findElement(By.xpath(itemLocatorP1));

        WebElement fullName = driver.findElement(By.xpath(itemLocatorP2));

        String p1, p2;


        if((abbreviation.isDisplayed()) && (fullName.isDisplayed())) {

            try {

                getMenu().scroll_To_View_Web_Element(itemLocatorP1);

                p1 = getUITxt(itemLocatorP1);

                getMenu().scroll_To_View_Web_Element(itemLocatorP2);

                p2 = getUITxt(itemLocatorP2);

                txt[0] = p1;

                txt[1] = p2;

            }

            catch(Exception e) {

                txt[0] = "Blank";

                System.out.println("Array txt Exception-> " + txt[0]);

            }

            // removing some html txt from the txtFromDB so that it can match with the UI

            txtFromDB = txtFromDB.replaceAll("<dt>", "");

            txtFromDB = txtFromDB.replaceAll("</dt>", "");

            txtFromDB = txtFromDB.replaceAll("<dd>", "");

            txtFromDB = txtFromDB.replaceAll("</dd>", "");

            txtFromDB = txtFromDB.replaceAll(">", "");

            txtFromDB = txtFromDB.replaceAll("</dl>", "");

            txtFromDB = txtFromDB.replaceAll("</dl", "");

            txtFromDB = txtFromDB.replaceAll("<dl style=", "");

            txtFromDB = txtFromDB.replaceAll("float: left; text-align: left; width: 50%;", "");

            txtFromDB = txtFromDB.replaceAll("\"\"", "");

            txtFromDB = txtFromDB.replaceAll("&nbsp;", " ");

            txtFromDB = txtFromDB.replaceAll("amp;", "");

            txtFromDB = txtFromDB.replaceAll("&nbsp;", " ");

            txtFromDB = txtFromDB.replaceAll("&rsquo;s", "’s");

            txtFromDB = txtFromDB.replaceAll("&ndash;", "–");

            txtFromDB = txtFromDB.replaceAll("(?m)^[ \t]*\r?\n", "");

            //System.out.println("DB Txt -> " + txtFromDB);


            String[] splitArrDB = txtFromDB.split("\\n");


            List<String> acronymsList = new ArrayList<>();


            for(int i = 0 ; i < splitArrDB.length; i++) {

                acronymsList.add(splitArrDB[i] + splitArrDB[i]);

            }



            for(String temp : acronymsList) {

                if((temp.contains(txt[0]))) {

                    System.out.println("Found " + txt[0] + " in the list");

                    compareValue1 = true;

                    break;

                }

                //System.out.println("still searching.....");

            }


            for(String x : acronymsList) {

                if((x.contains(txt[1]))) {

                    System.out.println("Found " + txt[1] + " in the list");

                    compareValue1 = true;

                    break;

                }

                //System.out.println("still searching.....");

            }



查看完整回答
反对 回复 2022-11-02
  • 2 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信