如何使用 Java 在 XML 节点中提取值列表

How to extract list of values in an XML node using Java

下面是相关的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> 标记中以逗号分隔的值列表提取到 List 中?

简而言之,如何提取以下标签中的所有信息 XML:

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

获取属性值

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);