java - 如何解析具有相同名称但位于不同父级下的两个节点?

标签 java xml xpath xmldocument

 <PublicRecords>
      <USBankruptcies>
         <USBanktruptcy>...<USBankruptcy>
         <CourtId>...</CourtId>
         <USBanktruptcy>...<USBankruptcy>
         <CourtId>...</CourtId>
      </USBankruptcies>             
      <USTaxLiens>
         <USTaxLien>...<USTaxLien>
         <CourtId>...</CourtId>
         <USTaxLien>...<USTaxLien>
         <CourtId>...</CourtId>
      </USTaxLiens>       
      <USLegalItems>
         <USLegalItem><USLegalItem>
         <CourtId></CourtId>
          <USLegalItem><USLegalItem>
         <CourtId></CourtId>
      </USLegalItems>       
  </PubicRecords>

我使用 doc 和 xpath 对象的组合来提取属性和节点内容。

    NodeList bp = doc.getElementsByTagName("USBankruptcy");
    NodeList nl = doc.getElementsByTagName("CourtId");
    long itrBP;
    for (itrBP = 0; itrBP < bp.getLength(); itrBP++ )
    {

        Element docElement = (Element) bp.item(itrBP);
        Element courtElement = (Element) nl.item(itrBP);



        NodeList df = docElement.getElementsByTagName("DateFiled");
        if(df.getLength() > 0)
        {
            dateFiled = nullIfBlank(((Element)df.item(0)).getFirstChild().getTextContent());
            dateFiled = df.format(dateFiled);
        }

但是,当我说获取标签名称 CourtID 的元素时,它将获取所有 CourtID,而不仅仅是 USBankruptcy 下的那些。

有什么办法可以指定父级吗?

我尝试了 NodeList nl = doc.getElementsByTagName("USBankruptcies/CourtId");

它在运行时给了我一个 dom 错误。

最佳答案

而不是调用 getElementsByTagName("CourtId")方法,在子元素上调用它(在您的例子中,是 <USBankruptcies> 元素)。

NodeList bankruptcyNodes = doc.getElementsByTagName("USBankruptcies");
Element bankruptcyElement = (Element) bankruptcyNodes.item(0);

NodeList bankruptcyCourtNodes = bankruptcyElement.getElementsByTagName("CourtId");
// etc...

关于java - 如何解析具有相同名称但位于不同父级下的两个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110928/

相关文章:

java - Java中为BufferredImage添加模糊效果

java - 使用 Java 和 Sax 解析某些 RSS 提要时遇到问题

java - Lucene 按顺序查询

javascript - 使用 javascript 解析 XML 文件时出现问题(限制结果)

java - 用Java读取XML

xml - 关闭 Saxon 中的 xml header 输出

xml - 如何将UTC秒转换为时间字符串?

java - 如何使用 Selenium 和 Java 在网页上查找文本并获取其 XPath 或 CSS

Java:Selenium 将文本发送到错误的字段

java - gradle 4.2.2 和 sdk 版本 31 的 flutter gradle 构建失败