如何解析Java中xml标记中引号的值?

时间:2012-07-31 18:03:56

标签: java xml dom

我们假设我有一个xml标签,如:

<test val="val1 ">Test XML</test>

我想在文件中出现<test>标记时解析值“val1”,以便我可以将其保存到数组中。

1 个答案:

答案 0 :(得分:0)

您可以从文件中加载XML并选择标记名为test的所有元素,并从中提取属性值。

基本上:

doc.getElementsByTagName("test")为了选择所有"test"个元素,对于找到的每个元素,您可以选择名为"val"的{​​{1}}属性node.getAttributes().getNamedItem("val"),如果不是null只需getTextContent()即可获取其文字内容。


示例代码可能类似于:

// temporary result list just to store the values found
ArrayList<String> result = new ArrayList<String>();

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document doc = documentBuilder.parse(new ByteArrayInputStream("<document><test val=\"val1\">Test XML</test><test val=\"val2\">Test XML</test><test val=\"val3\">Test XML</test></document>".getBytes()));
// you could use something like: documentBuilder.parse(new FileInputStream("fileName.ext")); instead

// get test nodes and iterate over it checking test attribute
NodeList elements = doc.getElementsByTagName("test");
for (int i = 0; i < elements.getLength(); i++) {
    Node node = elements.item(i);
    Node attribute = node.getAttributes().getNamedItem("val");
    if (attribute != null) {
        result.add(attribute.getTextContent());
    }
}

// get result values in a string array (if collection is preferred use result instead)
String[] array = result.toArray(new String[] {});

// just print it in a readable format
System.out.println(Arrays.toString(array));

这将打印:

[val1, val2, val3]