Как извлечь список значений в узле XML, используя Java - PullRequest
0 голосов
/ 21 марта 2019

Ниже приведен соответствующий код XML:

<extendedDataElements
    name="Access"
    type="noValue">
    <children
        name="item-key"
        type="string">
        <values>00005</values>
    </children>

    <children
        name="access-type"
        type="string">
        <values>Search</values>
    </children>

    <children
        name="key-type"
        type="string">
        <values>Store</values>
    </children>

</extendedDataElements>

<extendedDataElements
    name="Version"
    type="string">
    <values>Core: 3.2.0, Enum: 3.2.3, Log4j1: 3.2.0</values>
</extendedDataElements>

У меня есть два extendedElements объекта, успешно загруженных в NodeList. Я хочу изолировать второй <extendedDataElements> объект (что я и сделал ниже) и извлечь все строки в теге <values> в List<String>:

List<String> valuesList = new ArrayList<String>();

NodeList extendedDataElementsNodeList = commonBaseEvent.getElementsByTagName("extendedDataElements");

//successfully isolates the <extendedDateElements> tag with a list of strings in the <values>
Node secondExtendedDataElementNode = extendedDataElementsNodeList.item(1);

Как извлечь список значений, разделенных запятыми в теге <values>, в список?

Проще говоря, как мне извлечь всю информацию из тега следующего XML:

<extendedDataElements
    name="Version"
    type="string">
    <values>Core: 3.2.0, Enum: 3.2.3, Log4j1: 3.2.0</values>
</extendedDataElements>

1 Ответ

1 голос
/ 21 марта 2019

для получения значений атрибута

String name = secondExtendedDataElementNode.getAttributes().getNamedItem("name").getNodeValue();
String type = secondExtendedDataElementNode.getAttributes().getNamedItem("type").getNodeValue();

сначала получите значения через запятую в массиве

String[] commaSeparatedValue = secondExtendedDataElementNode.selectSingleNode("values").getText().split(",");

затем добавьте эти значения в список,

с java8

valuesList = Arrays.stream(commaSeparatedValue).collect(Collectors.toList());

с java9

valuesList = List.of(commaSeparatedValue);
...