Java中的XHTML操作库
我正在寻找可以为我执行以下两项任务的XML/XHTMLJava库/框架 在进行一些定义之前:Java中的XHTML操作库,java,html,dom,Java,Html,Dom,我正在寻找可以为我执行以下两项任务的XML/XHTMLJava库/框架 在进行一些定义之前: NodeOffset(Node-Node,int-offset)标记XML树中文本节点中的某个点 nodeB,nodeI,nodeP是下面提到的XHTML树的相应的节点实例,nodeSpan是一些新创建的节点(其中Node不一定是org.w3c.dom.Node,也可以是任何其他抽象) 将XHTML美化为纯文本 该库应该能够从给定的XHTML生成纯文本输出(例如,通过实现或类似的方式),并在输出中的
标记XML树中文本节点中的某个点NodeOffset(Node-Node,int-offset)
,nodeB
,nodeI
是下面提到的XHTML树的相应的nodeP
实例,节点
是一些新创建的节点(其中nodeSpan
不一定是Node
,也可以是任何其他抽象)org.w3c.dom.Node
NodeOffset getNodeOffset(int-plainTextOffset)
)
示例:假设我们有以下XHTML:
<p><b>GeForce</b> 9300M GS provides powerful <i>visual computing features</i> to thin and light notebooks.</p>
然后,例如
应该返回nodegetNodeOffset(0)
NodeOffset(nodeB,0)
应该返回nodegetNodeOffset(40)
NodeOffset(nodeI,5)
应该返回nodegetNodeOffset(80)
NodeOffset(nodeP,49)
|GeForce 9300M GS provides powerful visua|l computing features to thin and light n|otebooks.
及
insert(nodeSpan、NodeOffset(nodeB,2)、NodeOffset(nodeP,9)、mode2)
操作应产生:
<p><b>Ge</b><span><b>Force</b> 9300M GS</span> provides powerful <i>visual computing features</i> to thin and light notebooks.</p>
GeForce 9300M GS为轻薄笔记本电脑提供强大的视觉计算功能
它类似于用户在富编辑器中所做的操作:
GeForce 9300米GS
我想知道,在开源世界中是否有类似的事情,因为我真的不想重新实现轮子。。。我检查得很快,但没有成功
当您发布答案时:
- 确保上述函数在库API中可用(提供指向JavaDoc的链接)
- 该库是Java本机(无JNI)和开源的
- 使用DOM遍历或CSS选择器查找和提取数据
- 操纵HTML元素、属性和文本
- 使用DOM遍历或CSS选择器查找和提取数据
- 操纵HTML元素、属性和文本
- 也许你可以试试
它是一个开源Java库,在MIT许可下发布。其源代码可从GitHub获得
从主页:
jsoup是一个用于处理真实HTML的Java库。
它使用最好的DOM、CSS和类似jquery的方法,为提取和操作数据提供了非常方便的API
使用jsoup,您可以:
以下是它的Javadoc:我包装了我已经包装好的代码,并进行了修改以匹配开源项目中的请求(WIP)。它有很好的文档记录,所以我怀疑你在使用它时会遇到问题 第一个请求(查找节点并从全局位置偏移)已经内置,并且XML中文本节点的拆分已经内置(因此您可以根据需要轻松地将它们包装到新节点中)。因此,添加用元素标记区域的逻辑相当简单。我稍后会尝试这样做,但这是我目前在这个请求上所做的最大努力 在XML上,使用my这是我的输出:
************* BASE DOCUMENT *****************
DOCUMENT ROOT
|-<p >
| |-<b >
| | |-Text: GeForce
| |-Text: 9300M GS provides powerful
| |-<i >
| | |-Text: visual computing features
| |-Text: to thin and light notebooks.
*** Text ***
"GeForce 9300M GS provides powerful visual computing features to thin and light notebooks."
*** Node of each text segment ***
[b: null]: GeForce
[p: null]: 9300M GS provides powerful
[i: null]: visual computing features
[p: null]: to thin and light notebooks.
*** Offset testing ***
offset 0 is at [b: null] at 0
offset 40 is at [i: null] at 5
offset 80 is at [p: null] at 48
**********基本文档*****************
文档根
|-
| |-
|| |-文本:GeForce
||-文本:9300米GS提供强大的
| |-
|| |-文本:可视化计算功能
||-文本:轻薄笔记本。
***正文***
“GeForce 9300M GS为轻薄笔记本电脑提供强大的视觉计算功能。”
***每个文本段的节点***
[b:null]:GeForce
[p:null]:9300米GS提供强大的
[i:null]:可视化计算功能
[p:null]:适用于轻薄笔记本电脑。
***偏移测试***
偏移量0位于0处的[b:null]
偏移量40位于5处的[i:null]
偏移量80位于[p:null]的48处
要求它在全局位置4拆分元素将产生
*********** Split(4) DOCUMENT *****************
DOCUMENT ROOT
|-<p >
| |-<b >
| | |-Text: GeFo
| | |-Text: rce
| |-Text: 9300M GS provides powerful
| |-<i >
| | |-Text: visual computing features
| |-Text: to thin and light notebooks.
*** Node of each text segment ***
[b: null]: GeFo
[b: null]: rce
[p: null]: 9300M GS provides powerful
[i: null]: visual computing features
[p: null]: to thin and light notebooks.
**********拆分(4)文档*****************
文档根
|-
| |-
|| |-文本:GeFo
|| |-文本:rce
||-文本:9300米GS提供强大的
| |-
|| |-文本:可视化计算功能
||-文本:轻薄笔记本。
***每个文本段的节点***
[b:null]:GeFo
[b:null]:rce
[p:null]:9300米GS提供强大的
[i:null]:可视化计算功能
[p:null]:适用于轻薄笔记本电脑。
当然,这种语法拆分对于匹配该文档的实际XML代码来说没有任何意义,但它将允许使用您希望的任何其他节点一次包装一个文本部分
编辑:已支持第一种插入模式
编辑2:已支持第二种插入模式
注意事项:
- 您所做的任何文档修改都将使所有抵销无效。以后使用它们将导致整个文档损坏。因此,在每次修改之后,必须执行GetOffset以再次检索偏移量
- 我知道有些功能没有文档记录。基本上,只有从
类请求的函数才应该在包之外使用。稍后将添加更多文档,您可以通过电子邮件与我联系(请参阅我的个人资料页)以了解问题StrXML
<p><b>Ge</b><span><b>Force</b> 9300M GS</span> provides powerful <i>visual computing features</i> to thin and light notebooks.</p>
************* BASE DOCUMENT *****************
DOCUMENT ROOT
|-<p >
| |-<b >
| | |-Text: GeForce
| |-Text: 9300M GS provides powerful
| |-<i >
| | |-Text: visual computing features
| |-Text: to thin and light notebooks.
*** Text ***
"GeForce 9300M GS provides powerful visual computing features to thin and light notebooks."
*** Node of each text segment ***
[b: null]: GeForce
[p: null]: 9300M GS provides powerful
[i: null]: visual computing features
[p: null]: to thin and light notebooks.
*** Offset testing ***
offset 0 is at [b: null] at 0
offset 40 is at [i: null] at 5
offset 80 is at [p: null] at 48
*********** Split(4) DOCUMENT *****************
DOCUMENT ROOT
|-<p >
| |-<b >
| | |-Text: GeFo
| | |-Text: rce
| |-Text: 9300M GS provides powerful
| |-<i >
| | |-Text: visual computing features
| |-Text: to thin and light notebooks.
*** Node of each text segment ***
[b: null]: GeFo
[b: null]: rce
[p: null]: 9300M GS provides powerful
[i: null]: visual computing features
[p: null]: to thin and light notebooks.