java xpath从xml中删除元素

2024-02-04

我正在尝试从 xml 文件中删除元素和子元素。特别是名为 Testlogging 的附加程序。

首先,这是我的 xml 文件的外观。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="null" threshold="null">

<appender class="DailyLogFileAppender" name="Testlogging">
    <param name="encoding" value="UTF-8"/>
    <param name="MaxFileSize" value="100MB"/>
    <param name="MaxBackupIndex" value="2"/>
    <param name="rootDir" value="c:\Logs"/>
    <param name="componentId" value="Testlogging"/>
    <param name="DatePattern" value="yyyyMMdd"/>
    <layout class="SyslogPatternLayout">
        <param ConversionPattern="%d{yyyy-MM-dd'T'HH:mm:ss.SSSZ} [%-5p] {%t} %c [%D] - %m%n"/>
    </layout>
</appender>

这是我的java代码:

DocumentBuilderFactory dbfact = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfact.newDocumentBuilder();
Document d = builder.parse(xmlFile);
        XPath xp = XPathFactory.newInstance().newXPath();
        NodeList nl = (NodeList)xp.compile("//appender").evaluate(d,XPathConstants.NODESET);

        for(int i = 0; i < nl.getLength(); i++)
        {
            if(xp.compile("./@name").evaluate(nl.item(i)).equals("Testlogging"))
            {
                Node node = nl.item(i);
                node.removeChild(nl.item(i));
            }
        }

我想删除此附加程序的所有内容,但引发了异常。我可能缺少一些简单的东西。

有任何想法吗?


那么你需要打电话removeChild在要删除的节点的父节点上,您需要处理NodeList以相反的顺序(因为 W3C DOM 集合是“实时”集合,可以随任何 DOM 操作而更改(https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#td-live https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#td-live))所以使用类似的方法

    NodeList nl = (NodeList)xp.compile("//appender[@name = 'Testlogging']").evaluate(d,XPathConstants.NODESET);
    for (int i = nl.getLength() - 1; i >= 0; i--) 
    {
       nl.item(i).getParentNode().removeChild(nl.item(i));
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java xpath从xml中删除元素 的相关文章

随机推荐

  • 初始化空切片的正确方法

    要声明一个大小不固定的空切片 最好这样做 mySlice1 make int 0 or mySlice2 int 只是想知道哪一种是正确的方法 您给出的两个替代方案在语义上是相同的 但是使用make int 0 将导致内部调用运行时 mak
  • 带有 sourcemap 的 Webpack 无法解析生产模式下的变量

    我想使用 Webpack 为我们的生产构建生成源映射 我设法生成它 但是当我在调试器中的断点处停止时 变量未解析 我究竟做错了什么 如何生成一个源映射 让 chrome devtools 在我停止在调试器中的断点处时解析变量 这些是我的 w
  • find_library 或 link_directories 或 find_package?什么是更好的方法?错误 - 使用 cmake 链接库

    Given文件 usr lib gstreamer 0 10 libgstffmpeg so存在在 CMakeLists txt 中进行更改 方法一 find library find library GST FFMPEG 名称 gstff
  • 在数据库中存储数组

    我想知道在数据库中存储数组是否真的是好的做法 我倾向于使用json encode而不是serialize 但只是想知道这是否是一个好主意 如果没有 那么我可以做一些小的更改 然后用逗号将数组内爆 不 这是一种可怕的做法 请不要插入 CSV
  • 方法中的方法

    我正在创建一个带有一些可重用代码的 C 库 并尝试在方法内创建一个方法 我有一个这样的方法 public static void Method1 Code 我想做的是这样的 public static void Method1 public
  • 非本地类型上具有多个条件的 GDB 断点

    我正在调试一个 C C 程序 我想在其中设置一个断点 其条件取决于多个变量 中断 foo cpp 60 if bar 3 i 5 这似乎不起作用 因为它会在遇到 foo cpp 60 时停止 而不是在两个条件匹配时停止 它甚至不匹配其中一个
  • Symfony 3.3 将存储库注入服务

    我有一个包 它保存在私有 Satis 存储库中 因为它的实体和存储库在多个应用程序之间共享 使用该捆绑包的其余应用程序是 Symfony 2 7 和 2 8 应用程序 我正在开发一个新应用程序 要求使用 Symfony 3 3 在 symf
  • 为什么在控制台应用程序中使用 async/await 时需要 AsyncContext?

    我在控制台应用程序中调用异步方法 我不希望应用程序在启动后不久即退出 即在可等待的任务完成之前退出 看来我可以这样做 internal static void Main string args try Task WaitAll DoThis
  • 全局禁用实体框架中的动态代理

    请问如何禁用 Entity Framework 5 中创建的所有实体的动态代理 目前 我正在设置这个espEntities Configuration ProxyCreationEnabled false 在每一个实例中DbContext有
  • 使用柱形图而非蜡烛图的 OHLC 图表的 GGPlot

    我正在研究 R 中的 ggplot 并尝试创建股票图表 我已经能够创建烛台图 现在我想制作条形图 它由一条从低价到高价的垂直线组成 然后 线的左边是开盘价 右边是收盘价 我不知道如何添加这个勾号 我能想到的最接近的东西是 geom erro
  • 如何接受文件 POST

    我正在使用 asp net mvc 4 webapi beta 来构建休息服务 我需要能够接受来自客户端应用程序的发布的图像 文件 使用 webapi 可以吗 以下是我目前正在使用的操作方式 有谁知道这个例子应该如何工作 HttpPost
  • 将地址转换为坐标

    有没有办法用 bing 地图将地址转换为坐标 Thank 从地址到纬度 经度坐标的过程通常称为地理编码 这篇博文有一些使用 Bing 的 WP7 的很好的示例代码 http www braincastexception com wp7 we
  • 如何将 RGB 或 HEX 颜色代码分组为更大的颜色组集?

    我正在分析大量图像并提取主要颜色代码 我想将它们分组为通用颜色名称范围 例如绿色 深绿色 浅绿色 蓝色 深蓝色 浅蓝色等 我正在寻找一种与语言无关的方式来自己实现一些东西 如果有我可以研究的例子来实现这一点 我将非常感激 在机器学习领域 你
  • 在 Apple iAP 中哪里可以找到有关 SSServerErrorDomain 的说明?

    我们有一个应用程序 它收集了一些来自 Apple iAP 购买的错误代码 在collect dashboard中 我们看到一些错误代码报告 但找不到确切的含义 例如 SSServerErrorDomain 2004 SSServerErro
  • ImportError:无法导入名称 ABCMeta - Linux 上 PyDev 中的 Python 错误

    我在 Linux 上使用 PyDev 编写代码时遇到了这个奇怪的错误 即使像这样的简单代码也会产生错误 print Hello World 错误就在这里 True Traceback most recent call last File u
  • 如何在 Windows Phone 8 应用程序中检查互联网连接可用性

    我正在开发Windows Phone 8 应用程序 在此应用程序中 我必须连接到服务器才能获取数据 因此 在连接到服务器之前 我想检查设备的互联网连接是否可用 如果互联网连接可用 那么只有我会从服务器获取数据 否则我会显示错误消息 请告诉我
  • AWS 放大在公共目录中添加文件

    当我在放大选项中提供密钥时 我正在使用 AWS amplify 在 s3 存储桶中上传视频 它会创建一个公共文件夹 然后获取该密钥 Amplify Storage uploadFile user hello 123321 mp4 examp
  • Dropbox 应用只能与一个 Dropbox 帐户交互

    我的需要是有一个简单的网络表单 还可以让人们上传一些 pdf 文件 我认为我可以做的 由于上传文件的大小和数量 是将这个应用程序的后端绑定到我的 dropbox 帐户或我的 box com 帐户 这两种服务都提供类似的 API 来构建应用程
  • 在 JavaScript 中将音频从 getUserMedia() 编码为 .OGG [重复]

    这个问题在这里已经有答案了 我正在开发一个 HTML5 项目 将 iOS 应用程序转换为基于 Web 的应用程序 应用程序内容创建的一部分是录音 我尝试在 JavaScript 中复制它而不使用插件 到目前为止 我已经能够从 getUser
  • java xpath从xml中删除元素

    我正在尝试从 xml 文件中删除元素和子元素 特别是名为 Testlogging 的附加程序 首先 这是我的 xml 文件的外观