我需要转换IOB格式的XML文件。
XML文件表示Latex编写的论文的结构,即带有章节和子章节。在这个表示中,部分被编码为BODY,然后我有一个HEADER,然后是段落或子部分。
示例:
<DIV DEPTH="1">
<HEADER ID="H-8"> Practical Results </HEADER>
<P TYPE="TXT">
<S ID="S-56" TYPE="TXT"> To assess its performance , <REF REFID="R-12" ID="C-36">Grover et al. 1993</REF> tried various methods . </S>
<S ID="S-57" TYPE="TXT"> The grammar is defined in metagrammatical formalism which is compiled into a unification-based ` object grammar ' -- a syntactic variant of the Definite Clause Grammar formalism <REF REFID="R-21" ID="C-37">Pereira and Warren 1980</REF> -- containing 84 features and 782 phrase structure rules . </S>
<DIV DEPTH="2">
<HEADER ID="H-9"> Comparing the Parsers </HEADER>
<P TYPE="TXT">
<S ID="S-61" TYPE="TXT"> In the first experiment , the ANLT grammar was loaded and a set of sentences was input to each of the three parsers . </S>
</P>
<IMAGE ID="I-0"/>
</DIV>
我想要做的是保留所有文本,但将其转换为不同的格式,即我想删除BODY结构,只需标记HEADER和文本部分,如下所示:
Practical/B-Header Results/I-Header ./O
To/B-Text assess/I-Text its/I-Text performance/I-Text ,/I-Text Grover/I-Text et/I-Text al./I-Text tried/I-Text various/I-Text methods/I-Text ./O
The/B-Text grammar/I-Text ... ./O
等等。
我知道Java中的一些DOM解析(例如,我一直在使用jdom2)但我不知道如何保持文本的顺序:例如,我想获取REF的内容tag(在S中,查看示例),但其父级的文本在REF标记之前和之后扩展。
任何指针?应该相当简单,但像“在一定深度后剥离XML标签”之类的搜索对我没有帮助: - (
答案 0 :(得分:0)
我会使用基于事件的xml解析器,如sTax,sax等。然后,您可以在处理每个标记时跟踪级别,顺序和其他内容。