Java 从文档中读取多个级别的xml属性`
我从教程中获得了以下代码,用于在java应用程序中打印xml属性。最终,我将把它们作为字符串分配给变量Java 从文档中读取多个级别的xml属性`,java,xml,document,Java,Xml,Document,我从教程中获得了以下代码,用于在java应用程序中打印xml属性。最终,我将把它们作为字符串分配给变量 doc.getDocumentElement().normalize(); System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); NodeList nList = doc.getElementsByTagName("xyz:xyzcontent
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("xyz:xyzcontent");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element is " + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
eElement.getAttribute("id");
System.out.println("Link : " + eElement.getElementsByTagName("link").item(0).getTextContent());
}
}
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“xyz:xyzcontent”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
这工作正常,但我需要访问特定的
。有多个
属性。例如:
<releasedate>
<date>1300981500000</date>
</releasedate>
<createddate>
<date>1300981385795</date>
</createddate>
1300981500000
1300981385795
如何获取
值而不是
值?它似乎只是选择了它找到的第一个。谢谢。我会使用XPathExpression
代码如下所示:
XPathFactory xfactory = XPathFactory.newInstance();
XPath xpath = xfactory.newXPath();
XPathExpression createdDateExpression = xpath.compile("/createddate/date"); //or actual path
String createdDateStr = createdDateExpression.evaluate(doc);
编译任何文档后,都可以在其上使用该表达式
我喜欢使用XPath从XML中提取一些精选元素,而不是将整个文档解析为一个对象 我会使用XPathExpression
public static void main(String[] args) throws Throwable, SAXException, IOException {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(your stream);
NodeList n = doc.getElementsByTagName("root").item(0).getChildNodes();
for(int i=0; i<n.getLength(); i++) {
Node item = n.item(i);
if(item instanceof Element) {
String e = ((Element)item).getElementsByTagName("date").item(0).getTextContent();
System.out.println();
System.out.println(((Element) item).getTagName());
System.out.println(e);
//if you need to convert to date:
System.out.println(new Date(Long.parseLong(e)));
}
}
}
代码如下所示:
XPathFactory xfactory = XPathFactory.newInstance();
XPath xpath = xfactory.newXPath();
XPathExpression createdDateExpression = xpath.compile("/createddate/date"); //or actual path
String createdDateStr = createdDateExpression.evaluate(doc);
编译任何文档后,都可以在其上使用该表达式
我喜欢使用XPath从XML中提取一些精选元素,而不是将整个文档解析为一个对象 不幸的是,这不会返回CreatedDataTestr的任何结果。我使用的是/xyz:xyzcontent/createddate/date的完整路径。请阅读如何在XPath对象中注册名称空间(这相当简单):这很有帮助,但我的第一个示例似乎非常困难。我将提交另一个问题。不幸的是,这不会返回CreatedDataTestr的任何结果。我使用的是/xyz:xyzcontent/createddate/date的完整路径。请阅读如何在XPath对象中注册名称空间(这相当简单):这很有帮助,但我的第一个示例似乎非常困难。我将提交另一个问题。
public static void main(String[] args) throws Throwable, SAXException, IOException {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(your stream);
NodeList n = doc.getElementsByTagName("root").item(0).getChildNodes();
for(int i=0; i<n.getLength(); i++) {
Node item = n.item(i);
if(item instanceof Element) {
String e = ((Element)item).getElementsByTagName("date").item(0).getTextContent();
System.out.println();
System.out.println(((Element) item).getTagName());
System.out.println(e);
//if you need to convert to date:
System.out.println(new Date(Long.parseLong(e)));
}
}
}