gpt4 book ai didi

java - Java 中的字符串替换

转载 作者:太空宇宙 更新时间:2023-11-04 09:58:48 25 4
gpt4 key购买 nike

基本上是我的dataHandler content 应该是引用肥皂附件 id 的字符串,但我的 stub 将基于传递给 stub 的 DataHandler 对象的 base64string 放在一起。

如何在发送之前“破解”邮件正文?

env.getBody().toString().replaceAll(pattern, "<dataHandler>cid:" + cid + "</dataHandler")正是我想要的,但是 env.getBody().setText不设置正文的文本**

// create a message context
_messageContext = new org.apache.axis2.context.MessageContext();

// Modified
// Attachment
String cid = _messageContext.addAttachment(dispatchDocumentRequest8.getDataDescription().getDataHandler());

// create SOAP envelope with that payload
org.apache.axiom.soap.SOAPEnvelope env = null;


env = toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),
dispatchDocumentRequest8,
optimizeContent(new javax.xml.namespace.QName("com.test",
"dispatchDocument")));

// Modified
String pattern = "(?s)<dataHandler[^>]*>.*?</dataHandler>";

env.getBody().setText(env.getBody().toString().replaceAll(pattern, "
<dataHandler>cid:" + cid + "</dataHandler"));

最佳答案

Never ever使用正则表达式解析 XML/HTML/YML/任何其他 ML!

使用适当的解析器。有three different parsers for XML :DOM、SAX、StAX。但在您的情况下,您已经通过 getBody() 获得了 XML!

final Document doc = env.getBody().extractContentAsDocument();
final NodeList nodes = doc.getElementsByTagName("dataHandler")

// Do stuff like
IntStream.range(0, nodes.getLength()).mapToObj(nodes::item).forEach(item->{
item.setNodeValue(…);
});

关于java - Java 中的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53762586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com