java加载html字符串,java操作html字符串

本文转载自

u011627980

查看原文

2016-03-04

0

業務描述:在我們系統中要這樣一個需求,我們會將html當作字符串保存在數據庫中,然后再后期通過Java需要操作這個html比如增加一個文件框,改變其結構,添加事件。解決方案:jsoup Java HTML解析器使用方法:1.導入jar包。可以使用maven幫你下載這個jar包和源碼Maven代碼 收藏代碼 org.jsoup jsoup 1.3.3 2.將字符串變成HTML文檔結構Java代碼 收藏代碼Document doc = Jsoup.parse(html); 有了上面的方法,就可以將一個字符串變成一個document文檔結構,然后就可以類似於jQuery的方法來選擇元素,添加元素,設置屬性等等操作。3.查找元素(都是見名知意的方法,多好……)getElementById(String id)getElementsByTag(String tag)getElementsByClass(String className)getElementsByAttribute(String key) (and related methods)兄弟節點: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()層級節點: parent(), children(), child(int index)4.獲取元素屬性attr(String key)獲取屬性attr(String key, String value)設置屬性attributes()獲取所有屬性id(), className() and classNames()text()獲取文本內容text(String value) 設置文本內容html()獲取元素內HTMLhtml(String value)設置元素內的HTML內容outerHtml()獲取元素外HTML內容data()獲取數據內容(例如:script和style標簽)tag() and tagName()5.設置htmlA.append(String html)Add the supplied HTML to the end of each matched element's inner HTML.(結尾插)B.prepend(String html)Add the supplied HTML to the start of each matched element's inner HTML.(頭插)C.appendText(String text);prependText(String text)Create and append a new TextNode to this element.(插入或者創建文本節點)D.appendElement(String tagName), prependElement(String tagName)E.html(String value)6.選擇器A.Selector選擇器概述tagname: 通過標簽查找元素,比如:ans|tag: 通過標簽在命名空間查找元素,比如:可以用 fb|name 語法來查找 元素#id: 通過ID查找元素,比如:#logo.class: 通過class名稱查找元素,比如:.masthead[attribute]: 利用屬性查找元素,比如:[href][^attr]: 利用屬性名前綴來查找元素,比如:可以用[^data-] 來查找帶有HTML5 Dataset屬性的元素[attr=value]: 利用屬性值來查找元素,比如:[width=500][attr^=value], [attr$=value], [attr*=value]: 利用匹配屬性值開頭、結尾或包含屬性值來查找元素,比如:[href*=/path/][attr~=regex]: 利用屬性值匹配正則表達式來查找元素,比如: img[src~=(?i)\.(png|jpe?g)]*: 這個符號將匹配所有元素B.Selector選擇器組合使用el#id: 元素+ID,比如: div#logoel.class: 元素+class,比如: div.mastheadel[attr]: 元素+class,比如: a[href]任意組合,比如:a[href].highlightancestor child: 查找某個元素下子元素,比如:可以用.body p 查找在"body"元素下的所有 p元素parent > child: 查找某個父元素下的直接子元素,比如:可以用div.content > p 查找 p 元素,也可以用body > * 查找body標簽下所有直接子元素siblingA + siblingB: 查找在A元素之前第一個同級元素B,比如:div.head + divsiblingA ~ siblingX: 查找A元素之前的同級X元素,比如:h1 ~ pel, el, el:多個選擇器組合,查找匹配任一選擇器的唯一元素,例如:div.masthead, div.logoC.偽選擇器selectors:lt(n): 查找哪些元素的同級索引值(它的位置在DOM樹中是相對於它的父節點)小於n,比如:td:lt(3) 表示小於三列的元素:gt(n):查找哪些元素的同級索引值大於n,比如: div p:gt(2)表示哪些div中有包含2個以上的p元素:eq(n): 查找哪些元素的同級索引值與n相等,比如:form input:eq(1)表示包含一個input標簽的Form元素:has(seletor): 查找匹配選擇器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素:not(selector): 查找與選擇器不匹配的元素,比如: div:not(.logo) 表示不包含 class=logo 元素的所有 div 列表:contains(text): 查找包含給定文本的元素,搜索不區分大不寫,比如: p:contains(jsoup):containsOwn(text): 查找直接包含給定文本的元素:matches(regex): 查找哪些元素的文本匹配指定的正則表達式,比如:div:matches((?i)login):matchesOwn(regex): 查找自身包含文本匹配指定正則表達式的元素注意:上述偽選擇器索引是從0開始的,也就是說第一個元素索引值為0,第二個元素index為1等7.更多細節查看:http://www.open-open.com/jsoup/parsing-a-document.htm

dash.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java内置的DOM或SAX解析器来解析XML字符串。DOM解析器将整个XML文档加载到内存,形成一个树形结构,可以方便地对节点进行操作;而SAX解析器则是基于事件驱动的,逐行读取XML文档并触发相应的事件,适合处理大型XML文档。 以下是使用DOM解析器解析XML字符串的示例代码: ```java import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; public class XmlParser { public static void main(String[] args) { try { String xmlString = "<root><person><name>John</name><age>30</age></person></root>"; DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(new InputSource(new StringReader(xmlString))); doc.getDocumentElement().normalize(); NodeList nList = doc.getElementsByTagName("person"); for (int temp = 0; temp < nList.getLength(); temp++) { Node nNode = nList.item(temp); if (nNode.getNodeType() == Node.ELEMENT_NODE) { Element eElement = (Element) nNode; System.out.println("Name : " + eElement.getElementsByTagName("name").item(0).getTextContent()); System.out.println("Age : " + eElement.getElementsByTagName("age").item(0).getTextContent()); } } } catch (Exception e) { e.printStackTrace(); } } } ``` 输出结果为: ``` Name : John Age : 30 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值