将字典转换为XML

2024-04-26 04:03:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从字典中的值创建一个XML字符串,该字典具有以下结构。从根到字符串的键数(字典深度)是不确定的,从1到?。在

'modes': {   'P': {   'S': {  u'01': u'Some Text A.',
                              u'02': u'Some Text B.',
                              u'03': u'Some Text C.',
                              u'04': u'Some Text D.',
                              u'05': u'Some Text E.',
                              u'06': u'Some Text F.'},
                     'U': {   u'01': u'Some Text G.',
                              u'02': u'Some Text H.'}},
            'R': {   'S': {   u'01': u'Some Text I.',
                              u'02': u'Some Text J.',
                              u'03': u'Some Text K.',
                              u'04': u'Some Text M.',
                              u'05': u'LSome Text N.'},
                     'U': {   u'01': u'Some Text O.',
                              u'02': u'Some Text P.',
                              u'03': u'Some Text Q.'}}}

我想要的输出示例是:

^{pr2}$

我更感兴趣的是如何迭代结构,这样我就可以将子元素放在正确的父对象中,而不是精确地以XML形式输出。任何关于可能改变数据结构的建议也会很感激,因为我觉得我把自己画到了一个角落! 谢谢朱利安


Tags: 对象字符串text元素示例字典somexml
2条回答

我过去创建过一个小应用程序,我创建新集合的解决方案是: 我使用了exists-xqj库(ex-exists-xqj-1.0.1.jar;ex-xqj2-0.0.1.jar;ex-xqjapi.jar 首先,您需要创建conexion:

private static void conectar() {
    try {
        xqc = crearconexion("localhost", "8080", "admin", "abc123.");
    } catch (XQException ex) {
        System.out.println("No hay conexion con la base de datos");
    }
}

    private static XQConnection crearconexion(String host, String puerto, String admin, String pass) throws XQException {
    xqjd = new ExistXQDataSource();
    xqjd.setProperty("serverName", host);
    xqjd.setProperty("port", puerto);
    xqjd.setProperty("user", admin);
    xqjd.setProperty("password", pass);
    xqc = xqjd.getConnection();
    return xqc;
}

(java)我有一个public方法在这里创建这个集合 (.....)

    consulta = 
             "declare namespace exist = \"http://exist.sourceforge.net/NS/exist\"; \n"
            + "declare namespace request=\"http://exist-db.org/xquery/request\"; \n"
            + "    declare namespace xmldb=\"http://exist-db.org/xquery/xmldb\";  \n"
            + "    declare variable $file as xs:string { \""
            + "<menu>\n"
            + "    <maquina>\n"
            + "        <listname>"+maquina.getNombre()+"</listname>\n"
            + "    </maquina>\n"
            + "    <game name=\'0\'>\n"
            + "        <description></description>\n"
            + "        <cloneof/>\n"
            + "        <manufacturer></manufacturer>\n"
            + "        <personalizado>\n"
            + "            <estrellas>0</estrellas>\n"
            + "            <lotengo>No</lotengo>\n"
            + "            <jugado>No</jugado>\n"
            + "            <rutaimagen/>\n"
            + "        </personalizado>\n"
            + "        <rating></rating>\n"
            + "        <year></year>\n"
            + "        <genre></genre>\n"
            + "        <clave>1</clave>\n"
            + "    </game>\n"
            + "</menu>\""
            + " };  \n"
            + "    declare variable $name as xs:string { \""+maquina.getFile()+"\" };  \n"
            + "    declare variable $collection as xs:string { \""+RUTAROOT+"\" };  \n"
            + "      \n"
            + "    <results>  \n"
            + "    {  \n"
            + "    let $load-status := xmldb:store($collection, $name, $file)  \n"
            + "    return <load-status> { $load-status } </load-status>  \n"
            + "    }  \n"
            + "    </results>  ";

        ejecutarConsultaU(consulta);

private static void ejecutarConsultaU(String cadenaAConsultar) throws XQException {
    XQExpression consulta;
    consulta = xqc.createExpression();
    System.out.println("Inicio consulta \n");
    System.out.println(cadenaAConsultar);//it shows your query
    System.out.println("fin consulta \n");
    consulta.executeCommand(cadenaAConsultar);
}

据我所知,了解existdb的Java方面的人最好通过existdb邮件列表exist-open联系,而不是通过stackoverflow。我建议加入exist open并将您的问题发布到那里。你不会失望的。此外,请记住包含您正在运行的eXist的版本。祝你好运

相关问题 更多 >