根据Attribute值将xml解析为不同的成员

时间:2014-04-01 13:56:31

标签: 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" />
</EMPLOYEE>
<EMPLOYEE PERMANENT="N">
   <DETAILS NAME="CC"  ID="3"  AGE="28" />
    <DETAILS NAME="DD"  ID="4"  AGE="29" />
</EMPLOYEE>

爪哇

public class Employee
{

   // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="Y"
    private Details permanentEmployee;

   // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="N"
    private Details tempEmployee;

}

我不知道该怎么做。

有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

您可以使用java xml api

进行操作

选择“DETAILS”节点的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);

这将返回一个nodeList,您需要为每个DETAILS节点进行迭代,我假设该节点描述了一个员工。