Java 基于属性值将xml解析为不同的成员

Java 基于属性值将xml解析为不同的成员,java,xml,xml-parsing,converter,xstream,Java,Xml,Xml Parsing,Converter,Xstream,我正在研究XML到java解析。我有一个类似的场景 我需要根据属性值将XML解析为java 我需要在一个成员中解析属性为PERMANENT=“Y”的所有EMPLOYEE元素,在另一个成员中解析属性为PERMANENT=“N” <EMPLOYEE PERMANENT="Y"> <DETAILS NAME="AA" ID="1" AGE="28" /> <DETAILS NAME="BB" ID="2" AGE="29" /> </E

我正在研究XML到java解析。我有一个类似的场景

我需要根据属性值将XML解析为java

我需要在一个成员中解析属性为
PERMANENT=“Y”
的所有EMPLOYEE元素,在另一个成员中解析属性为
PERMANENT=“N”

<EMPLOYEE PERMANENT="Y">
    <DETAILS NAME="AA"  ID="1"  AGE="28" />
    <DETAILS NAME="BB"  ID="2"  AGE="29" />
</EMPLOYEE>
<EMPLOYEE PERMANENT="N">
   <DETAILS NAME="CC"  ID="3"  AGE="28" />
    <DETAILS NAME="DD"  ID="4"  AGE="29" />
</EMPLOYEE>
我不知道该怎么做


有人能帮我吗。

你可以用

选择“详细信息”节点的XPath表达式如下所示:

import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
//...

XPath xPath =  XPathFactory.newInstance().newXPath();
String expression = "/documentBody/EMPLOYEE[@PERMANENT="Y"]/DETAILS"
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);

这将返回一个节点列表,您需要对每个详细信息节点进行迭代,我假设它描述了一名员工。

谢谢。你能帮我怎么用这个吗xstreamAlias@PatanXStream是一个用于Java的xml序列化库。我非常怀疑您是否能够使用XStreamAlias注释来完成此操作,此注释旨在定义类或字段xml别名。。。您要求解析所有Employee元素。。。好的,如果它们是使用XStream库序列化的,那么您应该能够使用.fromXML()方法。如果它们不是使用XStream序列化的,那么我看不出使用这个库有什么意义,它的主要用途是xml序列化。Java已经为XPath查询提供了一个优秀的API。
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathFactory;
//...

XPath xPath =  XPathFactory.newInstance().newXPath();
String expression = "/documentBody/EMPLOYEE[@PERMANENT="Y"]/DETAILS"
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);