java - 获取另一个节点的子节点,给定节点名称

标签 java xml dom

我有一个这样的 XML:

<documentslist>
  <document>
    <docnumber>1</docnumber>
    <docname>Declaration of Human Rights</docname>
    <aoo>lib</aoo>
  </document>
  <document>
    <docnumber>2</docnumber>
    <docname>Fair trade</docname>
    <aoo>lib</aoo>
  </document>
  <document>
    <docnumber>3</docnumber>
    <docname>The wars for water</docname>
    <aoo>lib</aoo>
  </document>
  <!-- etc. -->
</documentslist>

我有这个代码:

//XML parsing
Document docsDoc = null;
try {
    DocumentBuilder db = dbf.newDocumentBuilder();
    docsDoc = db.parse(new InputSource(new StringReader(xmlWithDocs)));
}
catch(ParserConfigurationException e) {e.printStackTrace();}
catch(SAXException e) {e.printStackTrace();}
catch(IOException e) {e.printStackTrace();}
//retrieve document elements
NodeList docs = docsDoc.getElementsByTagName("document");

if (docs.getLength() > 0){
    //print a row for each document
    for (int i=0; i<docs.getLength(); i++){
        //get current document
        Node doc = docs.item(i);
        //print a cell for some document children
        for (int j=0; j<columns.length; j++){
            Node cell;
            //print docname
            cell = doc.getElementsByTagName("docname").item(0); //doesn't work
            System.out.print(cell.getTextContent() + "\t");
            //print aoo
            cell = doc.getElementsByTagName("aoo").item(0); //doesn't work
            System.out.print(cell.getTextContent() + "\t");
        }
        System.out.println();
    }
}

但是,如你所知 Node还没有getElementsByTagName方法...仅限Document有它。但是我做不到docsDoc.getElementsByTagName("aoo") ,因为它将全部返回给我<aoo>节点,不仅是 <document> 中存在的一个我正在检查的节点。

我该怎么做?谢谢!

最佳答案

如果 Node 不只是任何节点,而实际上是一个 Element(也可以是属性或文本节点),您可以将其转换为 Element 并使用 getElementsByTagName

关于java - 获取另一个节点的子节点,给定节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568262/

相关文章:

java - 如何从另一个Java类中的JTextfield读取用户输入

java - Android 与 Arduino Buffer 的通信不完整

java - Android studio “unfortunately [project name] stopped working”,有关如何修复的任何线索

javascript - 如何在事件上创建 DOM 元素,然后阻止事件处理程序触发,直到 DOM 元素存在?

javascript - 如何从 10 个或更多 ID 中选择一个包含特定数字的 ID

Java通过替换复制xml节点和子节点

java - android日历月份从0开始

c# - 如何使用 C# 从 java 进程获取带有参数的 ProcessStartInfo?

javascript - 跨浏览器 Javascript XML 解析

python - 属性错误 : 'xml.etree.ElementTree.Element' object has no attribute 'encode'