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

如何使用regex java合并两个XML文件

陶高扬
2023-03-14
String stra = "<?xml version=\"1.0\"?><voic:SetVoicemail xmlns:voic=\"http://schemas.ericsson.com/ma/CA/VOICEMAILRFS/\"><voic:msisdn>14184400787</voic:msisdn><voic:imsi>302510200240231</voic:imsi></voic:SetVoicemail>";
String strb="<?xml version=\"1.0\"?><voic:SetVoicemail xmlns:voic=\"http://schemas.ericsson.com/ma/CA/VOICEMAILRFS/\"><line><action>add</action></line><line><action>update</action></line></voic:SetVoicemail>";

//create a pattern object
Pattern pattern = Pattern.compile("<voic:SetVoicemail>(.*)</voic:SetVoicemail>");
String combinedString="";
//create a matcher object
Matcher matcher = pattern.matcher(stra);

if( matcher.find() ) {
    combinedString=combinedString+matcher.group(1);
}
matcher = pattern.matcher(strb);
if( matcher.find() ) {
    combinedString=combinedString+matcher.group(1);
}
System.out.println(combinedString);

我正在尝试通过字符串将根数据合并为一个,但无法这样做。请帮助。

共有1个答案

龙正初
2023-03-14

由于stra和strb均以开头,因此将找不到您的模式

<voic:SetVoicemail>

我假设您想要丢弃属性:voic。考虑以下代码

String stra = "<?xml version=\"1.0\"?><voic:SetVoicemail xmlns:voic=\"http://schemas.ericsson.com/ma/CA/VOICEMAILRFS/\"><voic:msisdn>14184400787</voic:msisdn><voic:imsi>302510200240231</voic:imsi></voic:SetVoicemail>";
String strb="<?xml version=\"1.0\"?><voic:SetVoicemail xmlns:voic=\"http://schemas.ericsson.com/ma/CA/VOICEMAILRFS/\"><line><action>add</action></line><line><action>update</action></line></voic:SetVoicemail>";
StringBuilder sb = new StringBuilder(stra.length() + strb.length());
sb.append("<?xml version=\"1.0\"?><voic:SetVoicemail>");

Pattern pattern = Pattern.compile("<voic:SetVoicemail .+?>(.+)</voic:SetVoicemail>");
Matcher matcher = pattern.matcher(stra);
if (matcher.find()) {
    sb.append(matcher.group(1));
}
matcher = pattern.matcher(strb);
if (matcher.find()) {
    sb.append(matcher.group(1));
}
sb.append("</voic:SetVoicemail>");
System.out.println(sb);

运行上面的代码会产生以下输出:

<?xml version="1.0"?><voic:SetVoicemail><voic:msisdn>14184400787</voic:msisdn><voic:imsi>302510200240231</voic:imsi><line><action>add</action></line><line><action>update</action></line></voic:SetVoicemail>
 类似资料:
  • 我有两个xml文件,需要使用XSLT将它们合并为一个。 第一个XML是(原始的): 第二个XML(更新数据)如下所示: 所需的合并结果-使用第二个XML更新第一个: 我已经搜索了stackoverflow,但仍然找不到答案。谢谢你的帮助。

  • 我有两个xml文件,需要将它们合并为一个xml。以下是示例: orginal.xml文件: 使现代化xml文件: 它们应合并为如下xml文件: 实际上,我想使用更新。xml来更新原始。xml: > update.xml中的新员工应该被添加到original.xml 在更新中修改了员工信息。xml应覆盖相应的员工节点。 我对XSLT略知一二,但我的知识还不足以找出适合合并的XSLT。

  • 问题内容: 文件1具有5个字段ABCDE,其中字段A是整数 文件2具有3个字段AFG 文件1中的行数比文件2中的行数大得多(20 ^ 6到5000) 文件1中A的所有条目都出现在文件2中的A字段中 我喜欢按字段A合并两个文件并携带F和G 所需的输出是ABCDEFG 例 文件1 文件2 所需的输出 问题答案: $ awk ‘FNR==NR{a[$1]=$2 FS $3;next}{ print $0

  • 我已经看到了如何用xslt合并两个xml文件或如何-can-I-merge-this-two-xml-files-using-xslt下的各种问题,但这些示例不处理文本输出,也不处理对“default”的静态引用。xml'。 我正在尝试生成一个由默认值生成的C headerfile。被目标修改的xml。xml。 我正在使用xsltproc作为xslt处理器,并希望能够执行xslproc merg。

  • 问题内容: 如何使用Java合并两个WAV文件? 我试过了,但是没有正常工作,他们还有其他方法吗? 问题答案: 如果直接使用wav文件的字节,则可以在任何编程语言中使用相同的策略。对于此示例,我将假设两个源文件具有相同的比特率/数字通道,并且具有相同的长度/大小。(否则,您可能可以在开始合并之前对其进行编辑)。 首先看一下WAV规范,我在斯坦福课程网站上找到了一个很好的人: 常见的标头长度为44或

  • 我有两个XML文件,需要仅使用XSLT 1.0将其合并为第三个XML文件 文件一: 文件二: 最终结果应该输出到第三个名为output的文件中。xml,应该如下所示 我正在使用记事本将XSLT应用于第二个文件,我尝试使用 添加了编辑XSLT