كيفية تعطيل الطباعة الجميلة (مساحة بيضاء / نيولاين) في Xstream؟

StackOverflow https://stackoverflow.com/questions/894625

  •  23-08-2019
  •  | 
  •  

سؤال

هذه هي الطريقة التي أقوم بإنشاء مثيل XStream ل XML:

XStream xstream = new XStream();

هذا هو ل JSON:

private final XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
        }
    });

كلاهما طباعة جميلة (المسافة البادئة) الإخراج.

كيف يمكنني أن أسأل Xstream لتعطيل الطباعة الجميلة؟

هل كانت مفيدة؟

المحلول 2

مع بعض المساعدة من المجتمع، لقد اكتشفت الإجابة.

ل xml يجب عليك تغيير طريقة كيفية تسلسل:

الخط:

xStream.toXML(o, new OutputStreamWriter(stream, encoding));

تغيرت إلى السطر

xStream.marshal(o, new CompactWriter(new OutputStreamWriter(stream, encoding)));

ل JSON. يمكنك فقط تغيير طريقة إنشاء Xstream. لذلك يتم تغيير تهيئة Xstream إلى:

private final XStream xstreamOut = new XStream(new JsonHierarchicalStreamDriver() {
    public HierarchicalStreamWriter createWriter(Writer writer) {
        return new JsonWriter(writer, new char[0], "", JsonWriter.DROP_ROOT_MODE);
    }
});

لاحظ أنه يتم استخدام منشئ JSONWRITER AFSONTER 4 المعلمة.

نصائح أخرى

شكرا، ساعدت مشاركاتك! هنا هو ما أستخدمه للتحويل إلى سلسلة.

String strXML = "";
XStream xs = new XStream();
StringWriter sw = new StringWriter();
xs.marshal(this,  new CompactWriter(sw));
strXML = sw.toString();

استخدم طريقة Marschal على Xstream مع كاتب مدمج

xstream.marshal(someObject, new CompactWriter(out)); 

السلوك الافتراضي للطباعة الجميل يأتي من طريقة AbstressxMldRiver.createWriter () (XSTREAM يستخدم XPPDriver كبرنامج تشغيل دفق هرمي افتراضي وهذا يمتد التخلص من التكلس):

public HierarchicalStreamWriter createWriter(Writer out) {
    return new PrettyPrintWriter(out, getNameCoder());
}

إذا كنت ترغب في تعطيل الطباعة الجميلة على مستوى العالم (أثناء الاحتفاظ بجميع السلوكيات الافتراضية الأخرى)، فما عليك سوى استخدام طريقة Toxml البسيطة بدلا من العبثات مع خيارات الاستخدام الأخرى المقترحة هنا، يمكنك تهيئة مثيل Xstream الخاص بك كما يلي. هذا يتجاوز الطريقة المذكورة أعلاه مع كاتب مضخم بدلا من ذلك.

XStream xstream = new XStream(new XppDriver() {
    @Override
    public HierarchicalStreamWriter createWriter(Writer out) {
        return new CompactWriter(out, getNameCoder());
    }
});

قم بإنشاء مثيل Xstream الخاص بك بهذه الطريقة:

XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE, new JsonWriter.Format(new char[0], new char[0], 0));
        }
});

هنا منشئ فئة التنسيق:

/**
 * Create a new Formatter.
 * 
 * @param lineIndenter the characters used for indenting the line
 * @param newLine the characters used to create a new line
 * @param mode the flags for the format modes
 * @since 1.4
 */
public Format(char[] lineIndenter, char[] newLine, int mode) {
    this(lineIndenter, newLine, mode, new NoNameCoder());
}

تحقق من شفرة المصدر JsonWriter للمزيد من المعلومات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top