如何在Java中解析xml标记中引号中的值?
假设我有一个xml标记,如:如何在Java中解析xml标记中引号中的值?,java,xml,dom,Java,Xml,Dom,假设我有一个xml标记,如: <test val="val1 ">Test XML</test> 每当文件中出现标记时,我想解析值val1,以便将其保存到数组中。您可以从文件中加载XML,并选择标记名为test的所有元素,然后从中提取属性值 基本上: doc.getElementsByTagNametest以选择所有测试元素,对于找到的每个元素,您可以使用node.getAttributes.getNamedItemval选择其名为val的属性,如果不是null,则仅使
<test val="val1 ">Test XML</test>
每当文件中出现标记时,我想解析值val1,以便将其保存到数组中。您可以从文件中加载XML,并选择标记名为test的所有元素,然后从中提取属性值 基本上: doc.getElementsByTagNametest以选择所有测试元素,对于找到的每个元素,您可以使用node.getAttributes.getNamedItemval选择其名为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));
步骤1:选择一个XML库。我建议使用支持XPath/XQuery的。。因此,关键词是:java库xml xpath是一个很好的解析库您的问题被标记为dom。那么,您想使用dom吗?你读过它的javadoc吗?你还不明白其中的什么?好的,所以getattributes.getNamedItem是必要的。是的,这将获取所有的属性,并且从这个案例中的一个名为val的属性中是的,这正是我想要弄清楚的。现在我只想知道库是否会使解析文件变得更容易,或者通常的dom模型可以完成这项工作?就内存考虑而言,如果我解析一个大值,那么你可以使用很多图书馆,我个人非常喜欢的一个是它非常直观,特别是当你已经使用了DOMFair足够的时候,它非常容易学习。谢谢你的回答。
[val1, val2, val3]