用java解析XML文件的元数据属性
我正在尝试解析XML文件,它的格式是用java解析XML文件的元数据属性,java,xml,dom,Java,Xml,Dom,我正在尝试解析XML文件,它的格式是 <parent tag> <child tag> <element key="property1">value</element> <element key="property2">value</element> </child tag> </parent tag> 我正在使用DOM解析器实现同样的功能。请帮
<parent tag>
<child tag>
<element key="property1">value</element>
<element key="property2">value</element>
</child tag>
</parent tag>
我正在使用DOM解析器实现同样的功能。请帮忙
谢谢。这是开始学习Java中XML解析的一个好机会这是开始学习Java中XML解析的一个好机会这里完成了工作(DOM+XPath),更多文档如下:
下面是关于xpath及其工作原理的一个很好的解释:
import javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.xpath.xpath;
导入javax.xml.xpath.XPathConstants;
导入javax.xml.xpath.XPathExpression;
导入javax.xml.xpath.XPathFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.NodeList;
公共类XmlParseTest{
公共静态void main(字符串[]args)引发异常{
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder=factory.newDocumentBuilder();
documentdoc=builder.parse(“test.xml”);
XPathFactory XPathFactory=XPathFactory.newInstance();
XPath=xpathFactory.newXPath();
XPathExpression expr=xpath.compile(“//element[@key='property1']]/text()”;
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
对于(int i=0;i
这里完成了任务(DOM+XPath),更多文档如下:
下面是关于xpath及其工作原理的一个很好的解释:
import javax.xml.parsers.DocumentBuilder;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.xpath.xpath;
导入javax.xml.xpath.XPathConstants;
导入javax.xml.xpath.XPathExpression;
导入javax.xml.xpath.XPathFactory;
导入org.w3c.dom.Document;
导入org.w3c.dom.NodeList;
公共类XmlParseTest{
公共静态void main(字符串[]args)引发异常{
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder=factory.newDocumentBuilder();
documentdoc=builder.parse(“test.xml”);
XPathFactory XPathFactory=XPathFactory.newInstance();
XPath=xpathFactory.newXPath();
XPathExpression expr=xpath.compile(“//element[@key='property1']]/text()”;
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
对于(int i=0;i
请提供您试图解析的xml。xml文件的格式是我正在尝试解析的xml文件的格式。值如何获取具有属性1的元素标记的值?我正在使用DOM解析器实现同样的功能。请帮忙。谢谢。剪贴板出现问题。它没有像我键入的那样发布问题。XML value@Soham的更好格式:向我们展示您为帮助您而做的尝试(即发布代码)。我们显然会帮助您,但不要期望我们为您编写代码:)请提供您试图解析的xml。xml文件的形式是我正在尝试解析的xml文件的形式。值如何获取具有属性1的元素标记的值?我正在使用DOM解析器实现同样的功能。请帮忙。谢谢。剪贴板出现问题。它没有像我键入的那样发布问题。XML value@Soham的更好格式:向我们展示您为帮助您而做的尝试(即发布代码)。我们显然会帮助您,但不要指望我们为您编写代码:)我编写的代码只返回子标记的值。但我不知道如何获取标记的属性。@Soham:您的问题有一个()选项。点击那个(或者点击这里的“编辑”链接),编辑你自己的问题。在编辑窗口中发布您的code@Soham:编辑您的问题,而不是我的答案:)如果XML文件有多个具有相同属性的子标记,该怎么办?在这种情况下,我们如何处理它?您能解释一下吗?谢谢……我编写的代码只返回子标记的值。但我不知道如何获取标记的属性。@Soham:您的问题有一个()选项。点击那个(或者点击这里的“编辑”链接),编辑你自己的问题。在编辑窗口中发布您的code@Soham:编辑您的问题,而不是我的答案:)如果XML文件有多个具有相同属性的子标记,该怎么办?在这种情况下,我们如何处理它?您能解释一下吗?谢谢…这正是我想要的..谢谢..:)我必须在类路径中包含哪个jar文件才能实现XPath?无,它是标准Oracle/Sun JDK的一部分,请记住添加导入:)这正是我想要的..谢谢..:)我必须在类路径中包含哪个jar文件才能实现XPath?无,它是标准Oracle/Sun JDK的一部分,请记住添加导入:)
public static ArrayList<String> parseXML(URL url_str,URLConnection conn_str,String root_tag,String child_tag) throws ParserConfigurationException, SAXException, IOException
{
String s = null;
ArrayList <String> List_value=new ArrayList<String>();
DocumentBuilderFactory dbF = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbF.newDocumentBuilder();
Document doc = dBuilder.parse(conn_str.getInputStream());
doc.getDocumentElement().normalize();
System.out.println("Root : "+doc.getDocumentElement());
System.out.println("****************");
NodeList nList= doc.getElementsByTagName(root_tag);
System.out.println("****************");
for (int i = 0; i < nList.getLength(); i++) {
Node node = nList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
NodeList nodelist1 = element.getElementsByTagName(child_tag);
for (int i1 = 0; i1 < nodelist1.getLength(); i1++)
{
Element element1 = (Element) nodelist1.item(i1);
NodeList fstNm = element1.getChildNodes();
s=fstNm.item(0).getNodeValue();
List_value.add(s);
}
for(int c=0;c<List_value.size();c++)
{
System.out.println(List_value.get(c));
}
}
}
return List_value;
}
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
public class XmlParseTest {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("test.xml");
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
XPathExpression expr = xpath.compile("//element[@key='property1']/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println(nodes.item(i).getNodeValue());
}
}
}