当我尝试使用 getElementsByTagNameNS 时列表为空

List is empty when im trying to use getElementsByTagNameNS

提问人:Sergey 提问时间:11/20/2022 更新时间:11/20/2022 访问量:44

问:

我有一些XML,下面是其中的一部分:

<?xml version="1.0" encoding="utf-8"?>
<fsa:ResponseFsaType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefact-rosaccreditation-ru/rdc/commons/1.0.2" xmlns:fsa="urn://x-artefact-rosaccreditation-ru/rdc/1.0.2">
  <fsa:RdcTr>
    <tns:Type>TrRf</tns:Type>
    <tns:Requisites>
      <tns:Status>Active</tns:Status>
      <tns:Section>Tr</tns:Section>
      <tns:Number>Д-RU.СС10.В.00001</tns:Number>
      <tns:DateReg>2015-12-20T00:00:00</tns:DateReg>
      <tns:DateExpiry>2018-12-18T00:00:00</tns:DateExpiry>
      <tns:NoExpiry xsi:nil="true" />
      <tns:BaseDeclaration>
        <tns:Documents>Заявление № 1/15 от 20.12.2015 Декларация о соответствии Копия свидетельства о регистрации ОГРН</tns:Documents>
        <tns:Schema>1д</tns:Schema>
        <tns:Base>
          <tns:string>1. Протокол испытаний № 1 от 14.12.2015, выдан Испытательной лабораторией «Табак лаборатория-Тест» Закрытого акционерного общества «Табак», № POCC RU.0001.22АА11</tns:string>
        </tns:Base>
        <tns:Laboratory>
          <tns:NumberReg>POCC RU.0001.22АА11</tns:NumberReg>
          <tns:Name>Испытательная лаборатория «Табак лаборатория-Тест»</tns:Name>
          <tns:DateReg>2014-10-04T00:00:00</tns:DateReg>
          <tns:DateExpiry>2018-10-04T00:00:00</tns:DateExpiry>
          <tns:Document xsi:nil="true" />
          <tns:Info xsi:nil="true" />
        </tns:Laboratory>
      </tns:BaseDeclaration>
      <tns:Discontinued xsi:nil="true" />
    </tns:Requisites>

我想将 XML 解析为对象,我知道我可以在 Java 中使用 DOM 解析来做到这一点。 我尝试使用下面的代码,但列表是空的:

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(new File("src/main/resources/sample.xml"));
        factory.setNamespaceAware(true);
        NodeList list = document.getElementsByTagNameNS(
                "urn://x-artefact-rosaccreditation-ru/rdc/commons/1.0.2", "Requisites");
        String a = list.item(0).getTextContent();
        System.out.println(a);
Java XML 解析 DOM

评论

1赞 VGR 11/21/2022
factory.setNamespaceAware(true);需要在从工厂创建 DocumentBuilder 之前调用。

答: 暂无答案