如何从 java 中的 <dc> 标签中提取数据?
How to extract data from <dc> tag in java?
我目前正在尝试从 Java 中的 epub 中提取标签元素 < dc:title >
。但是,我尝试使用
doc.getDocumentElement().getElementsByTagName("dc:title"));
而且只显示2nd element :com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl
。我想知道如何提取 < dc:tittle >
?
这是我的代码:
File fXmlFile = new File("file directory");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("1st element :" + doc.getElementsByTagName("dc");
System.out.println("2nd element :" + doc.getDocumentElement().getElementsByTagName("dc:title"));
系统输出:
1st element : com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@4f53e9be
2nd element :com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@e16e1a2
添加示例数据
<dc:title>
<![CDATA[someData]]>
</dc:title>
<dc:creator>
<![CDATA[someData]>
</dc:creator>
<dc:language>someData</dc:language>
方法getElementsByTagName(String)
是return一个匹配元素列表(注意复数's')。然后您需要指定要使用的元素(例如通过使用 .item(index)
访问 Node 实例)。因此,您可以在该 Node
对象上使用 getNodeValue()
。
已编辑:由于 CDATA 元素,而是使用 Node.getTextContent()
:
NodeList elems = doc.getElementsByTagName("dc:title");
Node item = elems.item(0);
System.out.println(item.getTextContent());
我建议使用 xpath 来获得所需的输出。
另外,请参考以下 link 的示例。
https://www.journaldev.com/1194/java-xpath-example-tutorial
例如:
XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "//dc:title/text()";
NodeList nodes = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET);
System.out.println(nodes.item(0).getNodeValue());
我目前正在尝试从 Java 中的 epub 中提取标签元素 < dc:title >
。但是,我尝试使用
doc.getDocumentElement().getElementsByTagName("dc:title"));
而且只显示2nd element :com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl
。我想知道如何提取 < dc:tittle >
?
这是我的代码:
File fXmlFile = new File("file directory");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("1st element :" + doc.getElementsByTagName("dc");
System.out.println("2nd element :" + doc.getDocumentElement().getElementsByTagName("dc:title"));
系统输出:
1st element : com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@4f53e9be
2nd element :com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@e16e1a2
添加示例数据
<dc:title>
<![CDATA[someData]]>
</dc:title>
<dc:creator>
<![CDATA[someData]>
</dc:creator>
<dc:language>someData</dc:language>
方法getElementsByTagName(String)
是return一个匹配元素列表(注意复数's')。然后您需要指定要使用的元素(例如通过使用 .item(index)
访问 Node 实例)。因此,您可以在该 Node
对象上使用 getNodeValue()
。
已编辑:由于 CDATA 元素,而是使用 Node.getTextContent()
:
NodeList elems = doc.getElementsByTagName("dc:title");
Node item = elems.item(0);
System.out.println(item.getTextContent());
我建议使用 xpath 来获得所需的输出。 另外,请参考以下 link 的示例。 https://www.journaldev.com/1194/java-xpath-example-tutorial 例如:
XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "//dc:title/text()";
NodeList nodes = (NodeList) xPath.compile(expression).evaluate(doc, XPathConstants.NODESET);
System.out.println(nodes.item(0).getNodeValue());