当前位置: 首页 > 知识库问答 >
问题:

XPath通过“id”属性进行搜索,给出NPE-Java

杜君浩
2023-03-14

全部的

我有多个XML模板,我需要填充数据,以允许我的文档生成器类使用多个模板并正确插入数据

我通过添加一个属性来指定我希望类插入数据的节点:

id=“根”

XML的一个例子

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<SiebelMessage MessageId="07f33fa0-2045-46fd-b88b-5634a3de9a0b" MessageType="Integration Object" IntObjectName="" IntObjectFormat="Siebel Hierarchical" ReturnCode="0" ErrorMessage="">
    <listOfReadAudit >
        <readAudit id="root">
            <recordId mapping="Record ID"></recordId>
            <userId mapping="User ID"></userId>
            <customerId mapping="Customer ID"></customerId>
            <lastUpd mapping="Last Updated"></lastUpd>
            <lastUpdBy mapping="Last Updated By"></lastUpdBy>
            <busComp mapping="Entity Name"></busComp>
        </readAudit>
    </listOfReadAudit>
</SiebelMessage>

密码

expr = xpath.compile("//SiebelMessage[@id='root']");
root = (Element) expr.evaluate(xmlDoc, XPathConstants.NODE);
Element temp = (Element) root.cloneNode(true);

使用以下示例:XPath按属性值选择元素

表达式不起作用:

//SiebelMessage[@id='root']

知道我做错了什么吗?

共有2个答案

公西苗宣
2023-03-14

您要做的是选择属性id='root'的SiebelMessage节点。

但是SiebelMessage没有id,它是您要查找的readAudit。你也可以

//readAudit[id='root']

//SiebelMessage//readAudit[id='root']
童华池
2023-03-14

试试这个:

//readAudit[@id='root']

这将选择所有readAudit元素,其id属性设置为root(在您的情况下,它应该只有一个元素)。

您可以确保它返回最多1个元素,如下所示:

//readAudit[@id='root'][1]
 类似资料:
  • id=“root” XML的一个示例 代码 //SiebelMessage[@id='root'] 你知道我做错了什么吗?

  • 问题内容: 我有这个: 但是,我可以将id作为通配符搜索,因为可以是,等等。 问题答案: 您可以提供可调用的过滤器: 或@DSM指出 因为BeautifulSoup将识别RegExp对象并调用其方法。

  • 问题内容: 在哪里可以找到有关WDS的文档,特别是使用C#中的SQL查询来查询WDS?是否有任何资源列出可以从SystemIndex查询的列?另外,我希望查询返回“上下文”,即就像WDS客户端从找到搜索词的文档中的几行开始一样。尽管我相信3+的API是相同的,但我正在使用WDS 4.0。我检查了MSDN和其他站点,但是没有运气。 问题答案: 在MSDN论坛上发布并得到答案:可以搜索的列或属性:ht

  • 当我试图通过findAll(可分页)读取整个bucket时,代码可以正常工作。当我尝试过滤分页的read-findByUserId(按用户ID查找)-获取java。lang.IndexOutOfBoundsException。此处记录筛选 实体: 存储库: 索引:创建主索引ON创建索引ON()WHERE(="com.example.demo.事件") 库:Spring Boot:2.3.4 正在获

  • 问题内容: 我的脚本来调用ajax 的HTML 问题: 在onkeyup上,我正在使用ajax来获取结果。一旦ajax结果延迟增加,对我来说就会发生问题。 例如, 当键入关键字时,我收到ajax结果,而当键入两次键之间的ajax时间延迟有时引起严重问题时,我收到ajax结果。 当我快速打字时。与相比,ajax搜索关键字的时间晚了。我不知道该如何处理这类案件。 结果由于ajax延迟 而快速键入关键字

  • 我正在尝试按id搜索对象,但出现以下错误:CastError:Cast to ObjectId在路径“\u id”处的值“[object object]”失败 这是我的代码: console.log(org_id.organisation_id); 给我:5661639AFF20A5CC806D476