Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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将DOM对象转换为段落_Java_Xml_Dom_Sax - Fatal编程技术网

Java将DOM对象转换为段落

Java将DOM对象转换为段落,java,xml,dom,sax,Java,Xml,Dom,Sax,java中是否有类似于python函数lmxl.sax.saxify[1]的函数,用于从DOM生成sax事件并针对sax ContentHandler激发它们。 主要目的是将DOM对象转换为段落列表。 给定这个html片段 <p> Here is a text! <ul><li>list1</li><li>list2</li></ul> </p> 这是一个文本! 列表1列表2 我想要的输出是:

java中是否有类似于python函数
lmxl.sax.saxify
[1]的函数,用于从DOM生成sax事件并针对sax ContentHandler激发它们。 主要目的是将DOM对象转换为段落列表。 给定这个html片段

<p> Here is a text! 
<ul><li>list1</li><li>list2</li></ul>
</p>
这是一个文本!
  • 列表1
  • 列表2
我想要的输出是:

  • 第一段:这里有一段文字
  • 第2段:清单1
  • 第3段:清单2

[1] 是的,您可以使用DOMSource和SAXSult运行转换,请参阅:


但是为什么不从DOM本身提取所需的信息呢?

如果要从DOM文档中检索所有文本节点(这与原始文档不同),那么Xpath是从DOM文档中搜索和提取数据的最简单(也是最有效)的方法

下面是您需要的一段代码:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("/path/example.html");
XPath xPath =  XPathFactory.newInstance().newXPath();
String pattern = "//*/text()"; // retrieve all text nodes in the doc
NodeList nl = (NodeList)xPath.compile(pattern)
        .evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nl.getLength() ; i++) {
    Node n = nl.item(i);
    String text = n.getNodeValue().trim();
    // skip over whitespace-only text
    if (text != null && text.isEmpty() == false) {
        System.out.println(text);
    }
}
Document doc=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(“/path/example.html”);
XPath=XPathFactory.newInstance().newXPath();
字符串模式=“//*/text()”;//检索文档中的所有文本节点
NodeList nl=(NodeList)xPath.compile(模式)
.evaluate(doc,XPathConstants.NODESET);
对于(int i=0;i
那么您想从DOM文档中检索所有文本节点?这是怎么回事?我是DOM parsingAlso的新手,我想解析的文件是html而不是xml。谢谢你的回复。我尝试了你的代码,但是我遇到了这个错误。dtd:31:3:实体“HTML.Version”的声明必须以“>”结尾。你知道这是因为我解析的是HTML而不是xml吗?快速谷歌搜索表明SGML dtd确实是这样。这里有一条线索,提出了克服这一问题的方法
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("/path/example.html");
XPath xPath =  XPathFactory.newInstance().newXPath();
String pattern = "//*/text()"; // retrieve all text nodes in the doc
NodeList nl = (NodeList)xPath.compile(pattern)
        .evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nl.getLength() ; i++) {
    Node n = nl.item(i);
    String text = n.getNodeValue().trim();
    // skip over whitespace-only text
    if (text != null && text.isEmpty() == false) {
        System.out.println(text);
    }
}