gpt4 book ai didi

java - SAX 解析器 - 提取标签内的字符串

转载 作者:行者123 更新时间:2023-12-02 06:21:54 24 4
gpt4 key购买 nike

这是我的问题:我需要使用 SAX 解析器提取标签“p”之间的文本,而不使用 XML 符号

    <title>1. Introduction</title>
<p>The Lorem ipsum
<xref ref-type="bibr" rid="B1">
1
</xref>.
Lorem ipsum 23.
</p>
<p>The L domain recruits an ATP-requiring cellular factor for this
scission event, the only known energy-dependent step in assembly
<xref ref-type="bibr" rid="B2">
2
</xref>.
Domain is used here to denote the amino
acid sequence that constitutes the biological function.
</p>

是否可以使用endElement()?因为当我使用它时,我只获得“/xref”标签之后的部分

这里是代码

public void endElement(String s, String s1, String element) throws SAXException {

if(element.equals(Finals.PARAGRAPH)){
Paragraph paragraph = new Paragraph();
paragraph.setContext(tmpValue);
System.out.println("Contesto: " + tmpValue);
listP.add(paragraph);

}
}
@Override
public void characters(char[] ac, int i, int j) throws SAXException {
tmpValue = new String(ac, i, j);

}

这就是我期望做的:包含两个段落的列表listP:

1) Lorem ipsum 1 Lorem ipsum 23.
2) The L domain recruits an ATP-requiring cellular factor for this
scission event, the only known energy-dependent step in assembly 2
Domain is used here to denote the amino
acid sequence that constitutes the biological function.

最佳答案

我不确定你所说的“是否可以使用 endElement”是什么意思,但这当然是可能的。您需要编写 SAX 应用程序,以便:

(1) 忽略所有 startElement/endElement <p> 之间的事件aragraph——简单的状态跟踪,或者您可以简单地说您对段落以外的元素不感兴趣,并使您的元素事件处理程序对您不关心的任何内容不进行操作。

(2)累计单独发货characters()事件直到 endElement对于<p>段落。但无论如何您都需要这样做,因为 SAX 始终保留将连续文本作为多个 characters() 提供的权利。调用,原因与解析器缓冲区管理有关。

关于java - SAX 解析器 - 提取标签内的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20937270/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com