当前位置: 首页 > 知识库问答 >
问题:

Java XML动态解析器

孟英锐
2023-03-14

我在寻找一个简单的解决方案。

我有一个xml文件:

<properties>
    <property>
        <class>java.lang.String</class>
        <value>String value...</value>
    </property>
    <property>
        <class>java.lang.Boolean</class>
        <value>true</value>
    </property>
    <!-- ... others java lang wrapper class -->
</properties>

我想做一个动态解析器。

我知道我可以用org.w3c.dom.*读取xml,org.w3c.dom.Node.getTextContent()我可以得到标签的值。

Class<?> clazz = Class.forName(classTextContent);
// How to convert value to specific clazz?
// if/else (clazz)? Does not look a nice answer.

有什么建议吗?

[编辑]通过反思:

变量“clazz”是java.lang.类,对吗?我怎么能转换文本内容值(在字符串)到任何包装类型?

Object objectValue = null;
Class<?> clazz = Class.forName(nodeClass.getTextContent());
String value = nodeValue.getTextContent();
if (clazz.equals(Boolean.class) { objectValue = Boolean.valueOf(value) }

valueOf可能是我可以使用反射调用的通用方法。。。整型、浮点型、布尔型、长型、双支持值。

另一种方式?

共有1个答案

宗弘扬
2023-03-14
Object object = YourClass.class.getConstructor(new Class<?>[]{}).newInstance();

// if you want to use a constructor, let's say, for YourClass(int name, int id)

Object object = YourClass.class.getConstructor(new Class<?>[]{int.class, int.class}).newInstance(desiredName, desiredId);
 类似资料:
  • 问题内容: 我有一个yaml文件,当前写为: 但是,此yaml文件经常更改,因此每次可以使用不同的值添加新条目: 我从使用gopkg.in/yaml.v2包开始就知道,如果所有值都相同,我可以解析yaml文件,例如: 在上面的示例中,它仅适用于密钥/狗密钥,而不适用于其他密钥。 当新值经常添加到yaml文件中时,如何在Go中执行此操作? 谢谢 问题答案: 如果您现在不精确的结构,则应该使您的结构看

  • 问题内容: 我如何解析这个json对象: 我可以有N个端口,每个端口的值始终是key:value对。 到目前为止,我已经尝试过了: 有了这个我得到键(0,1),但值是空的。 我也尝试过这个: 但也不行。 这就是我解码json对象的方式: 问题答案: 使用此类型: 游乐场的例子 笔记: 字段名称非常匹配。我使用字段名称“ Ports”来匹配JSON文本中使用的名称。 Go类型在JSON中应具有相同级

  • 我正在使用Spring4.3和Hibernate3.6。我尝试指定一个自定义Hibernate方言解析器,但没有使用它。 我把日志语句在我的自定义方言解析器,但他们从来没有打印。 我的具体问题是: > 如何让Hibernate 3.6获取我的自定义方言解析器? 为什么忽略一个特定的hibernate属性(hibernate.dialogue\u解析器)?正确的设置方法是什么? 这是我尝试过的事情的

  • 问题内容: 我有一个json对象是这样的: 我试图这样解析: 但是我不知道如何访问动态名称。我们如何解析这样的JSON -注意-Ya的 所有值都带有引号,例如:“ Yg&R_” 问题答案: 试试这个动态的JSON解析器

  • 我正在尝试用camel-routes应用程序为我的Spring Boot编写单元测试。我的路由生产者是Kafkaendpoint,URI在应用程序中定义。属性文件。我试图模拟这个Kafka生产者endpoint,但它没有解析URI值。 在上面的psedoocode中,Kafka。在应用程序中定义了@MockEndpointsAndSkip注释的服务器值。属性文件为kafka。服务器=本地主机:90

  • 问题内容: 我有动态JSON,下面是示例:http : //pastebin.com/QMWRZTrD 如何使用翻新解析? 我没有生成POJO类,因为我有诸如“ 5411”和“ 5412”之类的动态字段。 编辑 : 我通过使用Map来解决它,因为第一个值始终是整数,第二个是对象列表。 问题答案: 如果使用随机键,则可以用来序列化和反序列化。