gpt4 book ai didi

java - 在java中使用反射api解析xml

转载 作者:行者123 更新时间:2023-12-01 09:25:55 24 4
gpt4 key购买 nike

这是我的 XML 文件。

<customer>
<Field Number = '1' Value = '3'>
<Name>customer1</Name>
<Length>2</Length>
<Type>regular</Type>
<Method Number = '1'>pay through cash</Method>
<Method Number = '2'>pay through card</Method>
</Field>
<Field Number = '2'>
<Name>customer2</Name>
<Length>2</Length>
<Type>rare</Type>
</Field>
<Field Number = '3'>
<Name>customer3</Name>
<Length>4</Length>
<Type>regular</Type>
</Field>
</customer>

我应该使用java语言中的任何解析器来解析这个文件。
但是我的java源代码不应该包含xml文件的任何组件,例如 node.getAttributes().getNamedItem("Name").getNodeValue(); 在上面的指令中我使用了“Name”,但我不应该使用它。
哪种解析器对于这种情况是有效的。甚至欢迎代码片段。
我必须能够即时解析这个文件,并将标签内容用作类成员以及 setter 和 getter 方法。所以我使用了反射 api。

最佳答案

我假设您已经有了相应的类型。您可能需要稍微改变它们,因为如果不具体(您试图避免),您将很难将具有相同名称的 xml 元素分配给字段(可能是集合)。例如,您必须将元素称为因此,属于集合的每个元素都应作为集合(可以包含任何元素)或列表(可以包含同类元素)来处理

<ExampleSet>
<ExampleList>
<ExampleType>example1</ExampleType>
<ExampleType>example2</ExampleType>
</ExampleList>
<OtherExampleType>example3</OtherExampleType>
</ExampleSet>

您现在可以使用相应的接口(interface)标记每种类型(例如 XmlSet、XmlList、XmlType)。现在您可以解析它们,知道它们是否是由其他类型组成的集合,如果它们是列表,则它们是类型的集合,或者它们只是一个类型。现在,您可以根据通过反射确定的字段类型,使用反射将 XmlType 的值或属性分配给 String、int、long 或任何您需要的值。

下面是一个非常抽象的想法,如果您需要更多详细信息,请告诉我:

void readXml(Xml xml) {
if (xml instanceof XmlSet) readSet(xml);
else if (xml instanceof XmlList) readList(xml);
else if (xml instanceof XmlType) readType(xml);
}

void readSet(Xml xml) {
/*here you loop through the elements of set and call readXml(child)*/
}

void readList(Xml xml) {
/*here you loop through the elements of list and call readXml(child).*/
}

void readType(Xml xml) {
/* Here you use reflection to populate the value of elements with the corresponding java types */
}

关于java - 在java中使用反射api解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39830019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com