文档章节

XML 转solr schema filed name

小叮当_加V
 小叮当_加V
发布于 2015/11/02 11:50
字数 210
阅读 13
收藏 0

package lawyee.bigdata.dac.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

//读取xml模型,生成solr schema.xml文件的field
public class XMLToSchemaField {

    public static void main(String[] args) {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document document = builder.parse("C:\\test.xml");

            Element element = document.getDocumentElement();
            traversNode(element);

            // 打印list
            for (String s : lstXPath) {
                System.out.println(s);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    private static void traversNode(Element element) {
        if (element.getNodeName() == null && element.getNodeName() == "") {
            return;
        }
        getXPath(element);
        NodeList lstNode = element.getChildNodes();
        int count = lstNode.getLength();
        for (int i = 0; i < count; i++) {
            Node node = lstNode.item(i);
            String nodeName = node.getNodeName();
            if (nodeName.equals("#text")) {
                continue;
            }
            Element e = (Element) node;
            traversNode(e);
        }
    }

    public static List<String> lstXPath = new ArrayList();

    private static void getXPath(Node node) {
        String xpath = getNodeXPath(node);
        NamedNodeMap atts = node.getAttributes();
        for (int i = 0; i < atts.getLength(); i++) {
            Node att = atts.item(i);
            String attXpath = xpath + "/@" + att.getNodeName();
            lstXPath.add(attXpath);
        }
    }

    public static String getNodeXPath(Node node) {
        String xpath = "";
        XPath = "";
        if (node == null) {
            return xpath;
        }
        recurNode(node);
        xpath = XPath;
        return xpath;
    }

    private static String XPath = "";
    private static void recurNode(Node node) {
        String nodeName = node.getNodeName();
        XPath = "/" + nodeName + XPath;
        Node preNode = node.getParentNode();
        if (preNode != null && !preNode.getNodeName().contains("#")) {
            recurNode(preNode);
        }
    }

}


© 著作权归作者所有

小叮当_加V
粉丝 5
博文 98
码字总数 19908
作品 0
东城
私信 提问
Solr学习总结(五)SolrNet的基本用法及CURD

  上一篇已经讲到了Solr 查询的相关的参数。这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet使用非常方便,而且用户众多,一直都在更新,...

章为忠
2015/12/24
0
0
Solr的schema.xml

schema.xml是Solr一个配置文件,它包含了你的文档所有的字段,以及当文档被加入索引或查询字段时,这些字段是如何被处理的。这个文件被存储在Solr主文件夹下的conf目录下,默认的路径./solr/...

丢失的羊羔
2015/12/25
169
0
Solr6.3服务并从Mysql上导入数据

安装好solr6.3服务,我安装在centos7系统中,在/opt目录下 步骤1: 创建一个core,这里用hubin为例 步骤2: 把mysql所需的jar包(mysql驱动包mysql-connector-java-5.1.38.jar)和solr-6.3....

binhu
2016/11/18
101
1
Solr企业搜索引擎搭建

一、 SOLR搭建企业搜索平台 运行环境: 运行容器:Tomcat6.0.20 Solr版本:apache-solr-1.4.0 分词器:mmseg4j-1.6.2 词库:sogou-dic 准备工作: 下载tomcat 6.0.20:http://tomcat.apache....

dm_ml
2015/11/24
107
0
Solr开发文档

Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇文章中,将介绍 Solr 并展示如何轻松地将其表现优异的全文本搜索功能加入到 We...

ibm_hoojo
2011/10/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PANIC: Missing emulator engine program for 'x86' CPUS.

f you are using macOS, add both Android SDK emulator and tools directories to the path: Step 1: In my case the order was important, first emulator and then tools. export ANDROID......

SuShine
15分钟前
1
0
阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon

在近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括 OpenKruise 开源项目、开放云原生应用中心(Cloud Native App ...

阿里云官方博客
22分钟前
3
0
详解Vue中的虚拟DOM

摘要: 什么是虚拟DOM? 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有。 前言 Vue.js 2.0引入Virtual DOM,比Vue.js 1.0的初始渲染速度提升了2-4倍,并大大降低了内存消耗。那么,什么...

Fundebug
29分钟前
1
0
linux expect中的timeout设定

linux expect中的timeout设定 2015年04月29日 19:14:58 AlexYBB 阅读数 9265 在做日志分析工具时,发现在屏幕上拿到日志结果会有点慢,然后查了一下expect ssh timeout的设置,原来是这里有个...

linjin200
34分钟前
1
0
CentOS7安装nginx

1. 安装gcc,安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装(-y :后续默认确认操作) yum install -y gcc-c++ 2. 安装prec依赖,PCRE(Pe...

皮皮猫32
39分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部