[英]Write unescaped attribute with XMLStreamWriter
我试图写一个自定义实体作为属性值:
out.writeAttribute("storeent_id", "&MAR_STOREENT_ID;");
期望的:
<dmactivity
dmactivity_id="@dmactivity_id_collateral_21003"
storeent_id="&MAR_STOREENT_ID;"
optcounter="0"
/>
实际
<dmactivity
dmactivity_id="@dmactivity_BoysPantsRow2_Content"
storeent_id="&MAR_STOREENT_ID;"
optcounter="0"
/>
制作了一个自定义Writer
,它将用&MAR_STOREENT_ID;
替换MYENTITY_MAR_STOREENT_ID:
&MAR_STOREENT_ID;
。 适用于小型xml。
public class ReplacingWriter extends StringWriter {
protected Writer out;
public ReplacingWriter(Writer out) {
this.out = out;
}
@Override
public void close() throws IOException {
String s = toString();
for (int i = 0, len = rules.size(); i < len;) {
String a = rules.get(i++);
String b = rules.get(i++);
s = s.replaceAll(a, b);
}
out.write(s);
out.close();
}
private final ArrayList<String> rules = new ArrayList<String>();
public void addRule(String regex, String replacement) {
rules.ensureCapacity(rules.size() + 2);
rules.add(regex);
rules.add(replacement);
}
}
...
Serializer ser = processor.newSerializer();
rwr = new ReplacingWriter(fos);
rwr.addRule("MYENTITY_([^:]*):", "&$1;");
ser.setOutputWriter(rwr);
...
Serializer ser = processor.newSerializer();
rwr = new ReplacingWriter(fos);
rwr.addRule("MYENTITY_([^:]*):", "&$1;");
ser.setOutputWriter(rwr);
...
out.writeAttribute("storeent_id", "MYENTITY_MAR_STOREENT_ID:");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.