【问题标题】:Getting values from xml to .properties file in Java在 Java 中将值从 xml 获取到 .properties 文件
【发布时间】:2012-06-30 19:45:07
【问题描述】:

我在 .xml 文件中有与数据库连接相关的属性。我想在 .properties 文件中使用相同的值。是否可以从 .xml 文件中获取值并设置为 .properties?

-- 谢谢

使用 loadFromXML

时出现异常

线程“main”中的异常 java.util.InvalidPropertiesFormatException:org.xml.sax.SAXException:无效的系统标识符:http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd 在 java.util.XMLUtils.load(XMLUtils.java:76) 在 java.util.Properties.loadFromXML(Properties.java:868) 在 com.generalsentiment.test.quartz.CronTriggerExample.run(CronTriggerExample.java:40) 在 com.generalsentiment.test.quartz.CronTriggerExample.main(CronTriggerExample.java:117) 原因:org.xml.sax.SAXException:无效的系统标识符:http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd 在 java.util.XMLUtils$Resolver.resolveEntity(XMLUtils.java:190) 在 org.apache.xerces.util.EntityResolverWrapper.resolveEntity(未知来源) 在 org.apache.xerces.impl.XMLEntityManager.resolveEntity(未知来源) 在 org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(未知来源) 在 org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(未知来源) 在 org.apache.xerces.parsers.XML11Configuration.parse(未知来源) 在 org.apache.xerces.parsers.DTDConfiguration.parse(未知来源) 在 org.apache.xerces.parsers.XMLParser.parse(未知来源) 在 org.apache.xerces.parsers.DOMParser.parse(未知来源) 在 org.apache.xerces.jaxp.DocumentBuilderImpl.parse(未知来源) 在 java.util.XMLUtils.getLoadingDoc(XMLUtils.java:102) 在 java.util.XMLUtils.load(XMLUtils.java:74) ... 3 更多 Java 结果:1

【问题讨论】:

    标签: java xml properties


    【解决方案1】:

    您是否检查了 javadocs 的属性。 有一个loadFromXML 方法可以做到这一点。 唯一的限制是 XML 文件确认一个特定的结构,并且应该有下面提到的DOCTYPE 声明。

    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

    【讨论】:

    • 它从 .xml 文件中获取值并将其添加到 .properties 文件中?
    • 否,它将 XML 中的属性加载到 Properties 对象中。加载后,您可以使用 getProperty("property name"); 获取每个属性
    • 我正在尝试对 hibernate.cfg.xml 文件执行相同的“loadFromXML”,但它给出了异常。在问题中添加了异常详细信息
    • 我无法将行 ttp://java.sun.com/dtd/properties.dtd" rel="nofollow" target="_blank">java.sun.com/dtd/properties.dtd"> 添加到 hibernate.cfg.xml 文件中。
    • @SangramAnand ,您似乎对 xml 的工作方式感到困惑。并非所有 XML 文件的创建方式都相同 - 每个文件都有其自己的内部格式,由 doctype 定义。 hibernate 的 xml 配置与 loadFromXML 所期望的数据类型不同。将 doctype 放入文件中不会改变文件的结构。如果您熟悉数据库,则文档类型 .dtd 是模式规范,而 .xml 的内容是实际数据。尝试使用不同的模式访问任意数据是否有意义?希望对您的困惑有所帮助。
    【解决方案2】:

    将努力使用 .properties 文件中的值创建一个 XML 属性文件。此处未指定 XML 的架构;因此假设它不是 Java XML 属性格式。

    Java XML 属性文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
    <comment>Hi</comment>
    <entry key="foo">bar</entry>
    <entry key="fu">baz</entry>
    </properties>
    

    Java 代码:

    import java.util.*;
    import java.io.*;
    
    public class LoadSampleXML {
      public static void main(String args[]) throws Exception {
        Properties prop = new Properties();
        FileInputStream fis =
          new FileInputStream("sampleprops.xml");
        prop.loadFromXML(fis);
        prop.list(System.out);
        System.out.println("\nThe foo property: " +
            prop.getProperty("foo"));
      }
    }
    

    来自here 的示例代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多