我希望处理包含非常大且复杂的架构的XML文件。我知道我们可以使用DataImportHndler来处理这种类型的数据,但是在检索结果时,我们不会以与文件相同的方式获取数据。我想要以JSON格式的XML结果。
xml的结构非常复杂,因此我无法使用XPath Parser获得结果。 我的问题有其他解决办法吗?我认为我们中的一些人在处理大而复杂的数据时遇到了这种情况。
bellow只是XML文件架构的一个例子:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="chapter">
<xs:complexType>
<xs:sequence>
<xs:element ref="sentence" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required" />
<xs:attribute name="title" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="report">
<xs:complexType>
<xs:sequence>
<xs:element ref="toc" />
<xs:element ref="chapter" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sentence">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ref" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="toc">
<xs:complexType>
<xs:sequence>
<xs:element ref="tocitem" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="substructure">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="class" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="substructures">
<xs:complexType>
<xs:sequence maxOccurs="unbounded" minOccurs="0">
<xs:element ref="substructure" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tocitem">
<xs:complexType>
<xs:attribute name="chapter" type="xs:IDREF" use="required" />
</xs:complexType>
</xs:element>
答案 0 :(得分:0)
您可以使用更新请求处理程序将复杂的XML转换为标准的Solr文档格式。请求处理程序可能如下所示:
<requestHandler name="/update/xslt" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="tr">myComplexToSolr.xsl</str>
</lst>
</requestHandler>
tr
参数指向XSLT文件,该文件将输入XML转换为标准Solr格式。