java中字符串xml节点内的转义xml字符

2023-12-01

我有一个 XML 数据字符串。我需要转义节点内的值,而不是节点本身。

Ex:
<node1>R&R</node1>
应该转义到:
<node1>R&amp;R</node1>
不应该逃逸到:
&lt;node1&gt;R&amp;R&lt;/node1&gt;

过去几天我一直在努力解决这个问题,但并没有取得多大成功。我不是 Java 专家,但以下是我尝试过但不起作用的方法:

  1. 将字符串 xml 解析到文档中。不起作用,因为节点内的数据包含无效的 xml 数据。
  2. 逃离所有角色。不起作用,因为接收该数据的程序不会接受这种格式的数据。
  3. 转义所有字符然后解析到文档中。抛出各种错误。

任何帮助将非常感激。


您可以使用正则表达式匹配来查找尖括号之间的所有字符串,并循环/处理每个字符串。在这个例子中我使用了阿帕奇公共语言进行 XML 转义。

public String sanitiseXml(String xml)
{
    // Match the pattern <something>text</something>
    Pattern xmlCleanerPattern = Pattern.compile("(<[^/<>]*>)([^<>]*)(</[^<>]*>)");

    StringBuilder xmlStringBuilder = new StringBuilder();

    Matcher matcher = xmlCleanerPattern.matcher(xml);
    int lastEnd = 0;
    while (matcher.find())
    {
        // Include any non-matching text between this result and the previous result
        if (matcher.start() > lastEnd) {
            xmlStringBuilder.append(xml.substring(lastEnd, matcher.start()));
        }
        lastEnd = matcher.end();

        // Sanitise the characters inside the tags and append the sanitised version
        String cleanText = StringEscapeUtils.escapeXml10(matcher.group(2));
        xmlStringBuilder.append(matcher.group(1)).append(cleanText).append(matcher.group(3));
    }
    // Include any leftover text after the last result
    xmlStringBuilder.append(xml.substring(lastEnd));

    return xmlStringBuilder.toString();
}

这会查找 text 的匹配项,捕获标签名称和包含的文本,清理包含的文本,然后将其放回一起。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中字符串xml节点内的转义xml字符 的相关文章

  • Java,顺序流在哪个线程中执行?

    在阅读有关流的文档时 我遇到了以下句子 attempting to access mutable state from behavioral parameters presents you with a bad choice if you
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • 垂直 ViewPager 中的动画

    我需要垂直制作这个动画ViewPager https www youtube com watch v wuE 4jjnp3g https www youtube com watch v wuE 4jjnp3g 这是我到目前为止所尝试的 vi
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • 如何在Netbeans中设置JList的ListModel?

    我在 Netbeans IDE 的帮助下设计了一个 Swing GUI 该 GUI 包含一个 JList 默认情况下 它使用 QAbstractListModel 将其作为 JList 构造函数中的参数传递以创建该 JList 我想在 Ne
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • Java 8 方法签名不一致

    Java 8 为我们提供了具有很长签名的新方法 如下所示 static
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 解析根元素内元素之间的 XML 文本

    我正在尝试用 Python 解析 XML 以下是 XML 结构的示例 a aaaa1 b bbbb b aaaa2 a
  • 以编程方式创建 FloatingActionButton(无需 xml)

    我很欣赏 Android 的 FloatingActionButton fab 功能 并希望在我的项目中的许多不同地方使用它们 现在 我有这样的东西 我有几个 xml 规范 除了 id 图标和 onclick 之外 所有这些规范都是相同的
  • 使用 Java 8 Spring 4 + MyBatis 集成问题

    使用 Java 8 1 8 0 60 Spring 4 2 1 和 MyBatis 3 3 0 时遇到以下异常 Sep 29 2015 11 02 58 AM org springframework context annotation A
  • Android:是否可以在可绘制选择器中使用字符串/枚举?

    问题 Q1 有人设法让自定义字符串 枚举属性在 xml 选择器中工作吗 我通过以下 1 获得了一个布尔属性 但不是字符串属性 编辑 感谢您的回答 目前 android 仅支持布尔选择器 原因请参阅已接受的答案 我计划实现一个复杂的自定义按钮
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Unicode(希腊语)字符存储在数据库中,例如“??????”

    数据库中的希腊字符就像问号 我找不到解决办法 我使用 Java Swing 开发了一个应用程序 但是当我在 MySQL 中插入希腊字母时 就像问号一样 我将数据库排序规则更改为 utf8 并将列也更改为 utf8 我的项目编码设置为UTF
  • 如何在黑莓中解析xml文档?

    如何在 Blackberry 中解析 xml 文件 我可以有链接或示例代码或教程吗 我使用 SAX 来处理来自 Web api 的 XML 响应 它对我来说效果很好 查看 http developerlife com tutorials p
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • 使用 Java 8 IntStream 计算阶乘?

    我对 Java 8 和 lambda 表达式比较陌生Stream 我可以使用计算阶乘for循环或递归 但有没有办法使用IntStream计算一个数的阶乘 即使阶乘在整数范围内我也很好 我通读了IntStream文档在这里 http docs
  • 执行中的 Hadoop 错误:映射中的键类型不匹配:预期为 org.apache.hadoop.io.Text,已收到 org.apache.hadoop.io.LongWritable

    我正在 Hadoop 上实现 PageRank 算法 正如标题所示 我在尝试执行代码时遇到了以下错误 映射中的键类型不匹配 预期为 org apache hadoop io Text 已收到 org apache hadoop io Lon
  • 从表中获取 blob 图像并使用 php sqlite3 显示它

    我知道这个问题已经被问过很多次了 但我无法使用其中任何一个来解决这个问题 我是 sqlite 的新手 无法理解我做错了什么 我正在尝试什么 我正在尝试制作个人资料查看页面 我可以从我的 sqlite 数据库中获取所有详细信息 但无法显示我的
  • 在 Windows 命令行中获取接口名称、IP 和 MAC

    我想获取机器上所有接口 IP 和 MAC 地址的列表 我有很多机器 大约 600 台 可以获取此信息 但我无法在设备上使用批处理文件 我想发送命令并返回回显的输出 我需要的所有信息都在ipconfig all但我不知道如何用 for 循环来
  • 模拟 Java 枚举以添加值来测试失败情况

    我有一个enum或多或少像这样切换 public static enum MyEnum A B public int foo MyEnum value switch value case A return calculateSomethin
  • C# - 不同类型对象的列表

    我想创建一个列表 其中包含游戏中生成的所有不同单位的所有对象 但它们并不都是同一类 如果有帮助的话 它们都是主单元类的子类 但基本上我有一个具有基本功能的主要单位类 然后有更多的剑士 长枪兵等 我希望能够将所有不同的类型放在一个列表中 以便
  • 在同一(匿名)表中使用表键

    我想在同一个表中的匿名表中使用密钥 如下所示 loadstring return a One b a two 从我的角度来看 这should返回下表 a One b One two 然而 它只是返回nil 这可以做到吗 如何做到 As th
  • iOS PhotoKit:获取除全景之外的所有智能相册

    我使用以下代码来获取所有智能相册 PHAssetCollection fetchAssetCollections with PHAssetCollectionType smartAlbum subtype PHAssetCollection
  • Windows 是否缓存 SSH 密钥?

    我最近发布了一个有关 Git Bash 的问题 引用了旧的 GitHub 帐户用户名 请参阅此处的帖子 原帖 现在我完全确信 Windows 正在以某种方式存储我的 ssh 信息并将其用于我的 Git bash 会话 当我尝试推送到远程仓库
  • 在同一终端中执行“stty raw”命令?

    我正在尝试将控制台置于 Java 中的 原始 模式 我知道这只适用于 UNIX 我正在使用命令stty raw 如果我直接在终端中输入命令 它就会执行它应该执行的操作 在Java中 我尝试这样设置模式 Runtime getRuntime
  • 如何使关键字在 Qt::4.6 (C++) 中立即无延迟地工作?

    操作系统 win xp sp3 Qt 4 6 我有一个游戏板类 其中有一些矩形 我为该矩形定义了 keyPressEvent 以便在屏幕上移动他 Key A 矩形 moveToLeft 和 Key D 矩形 moveToRight 问题是按
  • 向量化 numpy 数组扩展

    我正在尝试找到一种方法来向量化一个操作 其中我采用 1 个 numpy 数组并将每个元素扩展为 4 个新点 我目前正在使用 Python 循环进行此操作 首先让我解释一下算法 input array numpy array 1 2 3 4
  • “按键%+”是什么意思?

    这段代码是什么意思 keys 我在一些源代码中看到了它 但我不知道要阅读哪些 Perl 文档才能了解它的含义 每当你看到一个看起来很漂亮的变量时 就在其中查找它perldoc perlvar 在这种情况下 是存储与最后一个正则表达式的命名捕
  • Python-docx设置文本方向RTL

    我正在尝试创建一个具有 RTL 从右到左 文本方向的文档 def printExam get the exam questions rows db db exam questions exam request vars exam selec
  • 改变图像尺寸后,图像的透明部分变成黑色

    我正在尝试根据我的视图更改图像大小 因此我为此编写了这段代码 UIImage imageWithImage UIImage image scaledToSize CGSize newSize Create a bitmap context
  • 删除Matlab中的四个嵌套循环

    我在 Matlab 中有以下四个嵌套循环 timesteps 5 inputsize 10 additionalinputsize 3 outputsize 7 input randn timesteps inputsize additio
  • 如何以编程方式在 Qt 中获取网络管理器设备名称?

    有没有可能在Windows中使用Qt C 获取网络适配器设备名称 网络适配器描述 我使用 QNetworkInterface 但它仅返回适配器名称 我想知道哪个适配器是基于 USB 的以太网 QNetworkInterface interf
  • 自动展开 Eclipse 插件 jar

    我的 Eclipse 插件需要作为平面目录展开执行 它使用 JNI 并且 JNI 部分需要访问插件提供的一些文件 如果作为 jar 安装 是否可以将插件配置为自动展开 或者我唯一的选择是要求用户将其内容解压缩到 Eclipse dropin
  • 使用“keras.utils.Sequence”作为输入时,不支持“y”参数。错误

    import pandas as pd from sklearn preprocessing import MinMaxScaler import os from tensorflow keras preprocessing image i
  • java中字符串xml节点内的转义xml字符

    我有一个 XML 数据字符串 我需要转义节点内的值 而不是节点本身 Ex