Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的XHTML操作库_Java_Html_Dom - Fatal编程技术网

Java中的XHTML操作库

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/XHTMLJava库/框架

在进行一些定义之前:

  • NodeOffset(Node-Node,int-offset)
    标记XML树中文本节点中的某个点
  • nodeB
    nodeI
    nodeP
    是下面提到的XHTML树的相应的
    节点
    实例,
    nodeSpan
    是一些新创建的节点(其中
    Node
    不一定是
    org.w3c.dom.Node
    ,也可以是任何其他抽象)
将XHTML美化为纯文本 该库应该能够从给定的XHTML生成纯文本输出(例如,通过实现或类似的方式),并在输出中的字符和原始XHTML节点树之间提供一对一的映射(例如,通过函数
NodeOffset getNodeOffset(int-plainTextOffset)

示例:假设我们有以下XHTML:

<p><b>GeForce</b> 9300M GS provides powerful <i>visual computing features</i> to thin and light notebooks.</p>
然后,例如

  • getNodeOffset(0)
    应该返回node
    NodeOffset(nodeB,0)
  • getNodeOffset(40)
    应该返回node
    NodeOffset(nodeI,5)
  • getNodeOffset(80)
    应该返回node
    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)和开源的
    • 也许你可以试试

      它是一个开源Java库,在MIT许可下发布。其源代码可从GitHub获得

      从主页:

      jsoup是一个用于处理真实HTML的Java库。 它使用最好的DOM、CSS和类似jquery的方法,为提取和操作数据提供了非常方便的API

      使用jsoup,您可以:

      • 使用DOM遍历或CSS选择器查找和提取数据
      • 操纵HTML元素、属性和文本
      这是它的Javadoc:

      也许你可以试试

      它是一个开源Java库,在MIT许可下发布。其源代码可从GitHub获得

      从主页:

      jsoup是一个用于处理真实HTML的Java库。 它使用最好的DOM、CSS和类似jquery的方法,为提取和操作数据提供了非常方便的API

      使用jsoup,您可以:

      • 使用DOM遍历或CSS选择器查找和提取数据
      • 操纵HTML元素、属性和文本

      以下是它的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
        类请求的函数才应该在包之外使用。稍后将添加更多文档,您可以通过电子邮件与我联系(请参阅我的个人资料页)以了解问题

      我包装了我已经拥有的代码,并进行了修改以匹配开源项目中的请求(WIP):。是p
      <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.