public void writeAttr(String name, String val) throws IOException { if (val != null) { writer.write(' '); writer.write(name); writer.write("=\""); XML.escapeAttributeValue(val, writer); writer.write('"'); } }
/** escapes character data in val and attributes */ public final static void writeXML(Writer out, String tag, String val, Object... attrs) throws IOException { final Writable writable = val != null ? (writer1) -> XML.escapeCharData(val, writer1) : null; writeXML(out, tag, writable, attrs); }
/********* * * @throws IOException If there is a low-level I/O error. */ public static void escapeCharData(String str, Writer out) throws IOException { escape(str, out, chardata_escapes); }
/** escapes character data in val */ public static void writeXML(Writer out, String tag, String val, Map<String, String> attrs) throws IOException { out.write('<'); out.write(tag); for (Map.Entry<String, String> entry : attrs.entrySet()) { out.write(' '); out.write(entry.getKey()); out.write('='); out.write('"'); escapeAttributeValue(entry.getValue(), out); out.write('"'); } if (val == null) { out.write('/'); out.write('>'); } else { out.write('>'); escapeCharData(val,out); out.write('<'); out.write('/'); out.write(tag); out.write('>'); } }
public final static void writeXML(Writer out, String tag, String val) throws IOException { out.write('<'); out.write(tag); if (val == null) { out.write('/'); out.write('>'); } else { out.write('>'); escapeCharData(val,out); out.write('<'); out.write('/'); out.write(tag); out.write('>'); } }
/** does NOT escape character data in val; it must already be valid XML. Attributes are always escaped. */ public final static void writeUnescapedXML(Writer out, String tag, String val, Object... attrs) throws IOException { writeXML(out, tag, (writer1) -> writer1.write(val), attrs); }
/** * Generates a delete xml string * @param val text that has not already been xml escaped * @param args 0 and Even numbered args are params, Odd numbered args are XML escaped values. */ private static String delete(String val, String... args) { try { StringWriter r = new StringWriter(); XML.writeUnescapedXML(r, "delete", val, (Object[]) args); return r.getBuffer().toString(); } catch(IOException e) { throw new RuntimeException ("this should never happen with a StringWriter", e); } }
/** escapes character data in val */ public final static void writeXML(Writer out, String tag, String val, Object... attrs) throws IOException { out.write('<'); out.write(tag); for (int i=0; i<attrs.length; i++) { out.write(' '); out.write(attrs[i++].toString()); out.write('='); out.write('"'); escapeAttributeValue(attrs[i].toString(), out); out.write('"'); } if (val == null) { out.write('/'); out.write('>'); } else { out.write('>'); escapeCharData(val,out); out.write('<'); out.write('/'); out.write(tag); out.write('>'); } }
public final static void writeXML(Writer out, String tag, String val) throws IOException { out.write('<'); out.write(tag); if (val == null) { out.write('/'); out.write('>'); } else { out.write('>'); escapeCharData(val,out); out.write('<'); out.write('/'); out.write(tag); out.write('>'); } }
public static String simpleTag(String tag, String... args) { try { StringWriter writer = new StringWriter(); XML.writeXML(writer, tag, (String) null, (Object[])args); return writer.getBuffer().toString(); } catch (IOException e) { throw new RuntimeException ("this should never happen with a StringWriter", e); } }
/** * Generates an <add><doc>... XML String with options * on the add. * * @param doc the Document to add * @param args 0th and Even numbered args are param names, Odds are param values. * @see #add * @see #doc */ public String add(Doc doc, String... args) { try { StringWriter r = new StringWriter(); // this is anoying if (null == args || 0 == args.length) { r.write("<add>"); r.write(doc.xml); r.write("</add>"); } else { XML.writeUnescapedXML(r, "add", doc.xml, (Object[])args); } return r.getBuffer().toString(); } catch (IOException e) { throw new RuntimeException ("this should never happen with a StringWriter", e); } }
/** escapes character data in val */ public final static void writeXML(Writer out, String tag, String val, Object... attrs) throws IOException { out.write('<'); out.write(tag); for (int i=0; i<attrs.length; i++) { out.write(' '); out.write(attrs[i++].toString()); out.write('='); out.write('"'); escapeAttributeValue(attrs[i].toString(), out); out.write('"'); } if (val == null) { out.write('/'); out.write('>'); } else { out.write('>'); escapeCharData(val,out); out.write('<'); out.write('/'); out.write(tag); out.write('>'); } }
public void writePrim(String tag, String name, String val, boolean escape) throws IOException { // OPT - we could use a temp char[] (or a StringBuilder) and if the // size was small enough to fit (if escape==false we can calc exact size) // then we could put things directly in the temp buf. // need to see what percent of CPU this takes up first though... // Could test a reusable StringBuilder... // is this needed here??? // Only if a fieldtype calls writeStr or something // with a null val instead of calling writeNull /*** if (val==null) { if (name==null) writer.write("<null/>"); else writer.write("<null name=\"" + name + "/>"); } ***/ int contentLen=val.length(); startTag(tag, name, contentLen==0); if (contentLen==0) return; if (escape) { XML.escapeCharData(val,writer); } else { writer.write(val,0,contentLen); } writer.write("</"); writer.write(tag); writer.write('>'); }
/** escapes character data in val and attributes */ public static void writeXML(Writer out, String tag, String val, Map<String, String> attrs) throws IOException { writeXML(out, tag, val, attrs.entrySet().stream().flatMap((entry) -> Stream.of(entry.getKey(), entry.getValue())).toArray()); }
private static void writeVal(Writer writer, String name, Object v, String update) throws IOException { if (v instanceof Date) { v = ((Date)v).toInstant().toString(); } else if (v instanceof byte[]) { byte[] bytes = (byte[]) v; v = Base64.byteArrayToBase64(bytes, 0, bytes.length); } else if (v instanceof ByteBuffer) { ByteBuffer bytes = (ByteBuffer) v; v = Base64.byteArrayToBase64(bytes.array(), bytes.position(),bytes.limit() - bytes.position()); } XML.Writable valWriter = null; if(v instanceof SolrInputDocument) { final SolrInputDocument solrDoc = (SolrInputDocument) v; valWriter = (writer1) -> writeXML(solrDoc, writer1); } else if(v != null) { final Object val = v; valWriter = (writer1) -> XML.escapeCharData(val.toString(), writer1); } if (update == null) { if (v != null) { XML.writeXML(writer, "field", valWriter, "name", name); } } else { if (v == null) { XML.writeXML(writer, "field", (XML.Writable) null, "name", name, "update", update, "null", true); } else { XML.writeXML(writer, "field", valWriter, "name", name, "update", update); } } }
private void writeAttribute(Writer w, String name, Object value) throws IOException { if (value == null) return; w.write(" "); w.write(name); w.write("=\""); XML.escapeAttributeValue(value.toString(), w); w.write("\""); }
public static void escapeAttributeValue(String str, Writer out) throws IOException { escape(str, out, attribute_escapes); }
/** * Generates an <add><doc>... XML String with options * on the add. * * @param doc the Document to add * @param args 0th and Even numbered args are param names, Odds are param values. * @see #add * @see #doc */ public static String add(XmlDoc doc, String... args) { try { StringWriter r = new StringWriter(); // this is annoying if (null == args || 0 == args.length) { r.write("<add>"); r.write(doc.xml); r.write("</add>"); } else { XML.writeUnescapedXML(r, "add", doc.xml, (Object[])args); } return r.getBuffer().toString(); } catch (IOException e) { throw new RuntimeException ("this should never happen with a StringWriter", e); } }
/**Write a complete tag w/ attributes and cdata (the cdata is not enclosed in $lt;!CDATA[]!> * @param tag * @param attributes * @param cdata * @param escapeCdata * @param escapeAttr * @throws IOException */ public void writeCdataTag(String tag, Map<String,String> attributes, String cdata, boolean escapeCdata, boolean escapeAttr) throws IOException { writer.write('<'); writer.write(tag); if (!attributes.isEmpty()) { for (Map.Entry<String, String> entry : attributes.entrySet()) { writeAttr(entry.getKey(), entry.getValue(), escapeAttr); } } writer.write('>'); if (cdata != null && cdata.length() > 0) { if (escapeCdata) { XML.escapeCharData(cdata, writer); } else { writer.write(cdata, 0, cdata.length()); } } writer.write("</"); writer.write(tag); writer.write('>'); }
private static String simpleTag(String tag, String... args) { try { StringWriter r = new StringWriter(); // this is annoying if (null == args || 0 == args.length) { XML.writeXML(r, tag, null); } else { XML.writeXML(r, tag, null, (Object[])args); } return r.getBuffer().toString(); } catch (IOException e) { throw new RuntimeException ("this should never happen with a StringWriter", e); } }