এক্সএমএল ডকুমেন্ট টু স্ট্রিং


104

এক্সএমএল ডকুমেন্টের (টি org.w3c.dom.Document) স্ট্রিং প্রতিনিধিত্ব পাওয়ার সহজ উপায় কী ? এটি হ'ল সমস্ত নোড একক লাইনে থাকবে।

উদাহরণ হিসাবে, থেকে

<root>
  <a>trge</a>
  <b>156</b>
</root>

(এটি কেবল একটি গাছের উপস্থাপনা, আমার কোডে এটি একটি org.w3c.dom.Documentবস্তু, সুতরাং আমি এটিকে স্ট্রিং হিসাবে বিবেচনা করতে পারি না)

প্রতি

"<root> <a>trge</a> <b>156</b> </root>"

ধন্যবাদ!


এর প্রতারিত stackoverflow.com/questions/315517/...
james.garriss

উত্তর:


207

ধরে docনেওয়া আপনার উদাহরণ org.w3c.dom.Document:

TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString().replaceAll("\n|\r", "");

12
replaceAllআপনি যদি অন্য একটি আউটপুট সম্পত্তি যুক্ত করেন তবে সম্ভবত এটি প্রয়োজনীয় নয়:transformer.setOutputProperty(OutputKeys.INDENT, "no");
বিভিডিবি

10
এবং এটি writer.getBuffer().toString()কেবল হতে পারেwriter.toString()
বিভিডিবি

@ বিভিডিবি উভয়ই দুর্দান্ত পয়েন্ট। স্পষ্টভাবে OutputKeys.INDENTলাইনটি যুক্ত করার একটি অতিরিক্ত সুবিধা রয়েছে , কারণ এরপরে আপনি "yes"এটি সাদা অংশ রাখতেও সেট করতে পারেন - যদি আপনি এটি চান তবে (আমার পরিস্থিতিতে আমি দেখতে পেয়েছি যে কেবল replaceAllঅপসারণটি সাদা জায়গার অন্তর্ভুক্ত করার জন্য কাজ করে না did স্ট্রিং)।
জোনাথন বেন

কীভাবে ইনডেন্টটি সঠিকভাবে কাজ করতে যায় তার ব্যাখ্যার জন্য আরও দেখুন stackoverflow.com/questions/1384802/…
জোনাথন বেন

2

অ্যাপাচি এক্সএমএলসিরাইজার ব্যবহার করুন

এখানে একটি উদাহরণ রয়েছে: http://www.informit.com/articles/article.asp?p=31349&seqNum=3&rl=1

আপনি এটি পরীক্ষা করতে পারেন

http://www.netomatix.com/XmlFileToString.aspx


জেরেসেস এখনও হাস্যকরভাবে ম্যাভেনের মাধ্যমে সরকারীভাবে বিতরণ করছে না (এইভাবে গ্রোভিও রয়েছে), কোনও নির্ভরযোগ্য উত্স বা জাভাডকস, ডাব্লুটিএফ সহ! কোনও সরকারী মভেন সমর্থন অবমূল্যায়নের রেজোলিউশনকে শক্ত করে না, ধারাবাহিক আপডেটগুলি আরও ঝামেলা করে এবং সুরক্ষা ঝুঁকি তৈরি করে, সুতরাং এখন এর উপর কোনও নির্ভরতা থাকা বোকামি!
ইনফারনোজ

1

প্রথমে আপনাকে আপনার সমস্ত পাঠ্য নোডের সমস্ত নতুন লাইন অক্ষর থেকে মুক্তি দিতে হবে। তারপরে আপনি নিজের ডিওএম ট্রি আউটপুটে পরিচয় রূপান্তর ব্যবহার করতে পারেন। জাভাদোক তাকান TransformerFactory#newTransformer()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.