Я работаю над XML-анализом java. У меня есть сценарий, подобный этому.
Мне нужно разобрать XML в java на основе значения атрибута.
Мне нужно проанализировать все элементы EMPLOYEE с атрибутом PERMANENT="Y"
в одном члене и с атрибутом 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;
}
Я не знаю, как это сделать.
Кто-нибудь может мне помочь.
Вы можете сделать это, используя java xml api
Выражение XPath для выбора узлов "DETAILS" будет выглядеть примерно так:
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, который я бы предположил, описывая одного сотрудника.