दिलचस्प पोस्ट
ASP.NET MVC कस्टम त्रुटि हैंडलिंग Application_Error Global.asax? 'आकार_टी' बनाम कंटेनर :: आकार_प्रकार ' जावा में ट्रिम वर्ण कई तर्कों के लिए सीएमडी.एक्सए के लिए सही उद्धरण जावास्क्रिप्ट कोड से पायथन फ़ंक्शन कॉल करें वेबव्यू में यूट्यूब वीडियो खेलते हैं Django: पुनर्स्थापना के बाद डेटाबेस का उपयोग करने की कोशिश करते समय अनुमति अस्वीकृत (माइग्रेशन) ब्राउजर को इसे खोलने के बजाय पीडीएफ दस्तावेज़ डाउनलोड करने के लिए मजबूर करें आप जावास्क्रिप्ट में विभिन्न आधारों के बीच संख्या कैसे बदल सकते हैं? स्ट्र्रेपी में सेगमेंटेशन फॉल्ट () एम्बेड करने के लिए .ttf फोंट JavaFx 2.2 है? PHP स्क्रिप्ट HTML फ़ाइल में काम नहीं कर रहा है एक असंबंधित इंटरफ़ेस के लिए कास्टिंग करते समय यह क्यों संकलन करता है? स्थिर चर प्रारंभिकता? पायथन में mkdir -p कार्यक्षमता

कैसे मैं आउटपुट org.w3c.dom.Java में स्ट्रिंग प्रारूप करने के लिए एलेमेंट?

मेरे पास एक org.w3c.dom.Element ऑब्जेक्ट मेरी विधि में पारित कर दिया है मुझे अपने मूल नोड्स (संपूर्ण ऑब्जेक्ट ग्राफ़) सहित संपूर्ण XML स्ट्रिंग देखने की आवश्यकता है। मैं एक विधि के लिए देख रहा हूँ जो Element को एक XML स्वरूप स्ट्रिंग में कनवर्ट कर सकता है जो मैं System.out.println पर कर सकता हूँ। 'एलिमेंट' ऑब्जेक्ट पर सिर्फ println() काम नहीं करेगी क्योंकि toString() एक्सएमएल फॉर्मेट को आउटपुट नहीं करेगी और इसके नोड में नहीं जाएंगे। क्या यह करने के लिए मेरी अपनी विधि लिखने के बिना एक आसान तरीका है? धन्यवाद।

Solutions Collecting From Web of "कैसे मैं आउटपुट org.w3c.dom.Java में स्ट्रिंग प्रारूप करने के लिए एलेमेंट?"

मान लें कि आप मानक एपीआई के साथ रहना चाहते हैं …

आप एक DOMImplementationLS का उपयोग कर सकते हैं:

 Document document = node.getOwnerDocument(); DOMImplementationLS domImplLS = (DOMImplementationLS) document .getImplementation(); LSSerializer serializer = domImplLS.createLSSerializer(); String str = serializer.writeToString(node); 

यदि <? Xml संस्करण = "1.0" एन्कोडिंग = "UTF-16"?> घोषणा आपको परेशान करती है, आप इसके बजाय एक ट्रांसफार्मर का उपयोग कर सकते हैं:

 TransformerFactory transFactory = TransformerFactory.newInstance(); Transformer transformer = transFactory.newTransformer(); StringWriter buffer = new StringWriter(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); transformer.transform(new DOMSource(node), new StreamResult(buffer)); String str = buffer.toString(); 

साधारण -4 लाइन कोड को XML-declaration ( <?xml version="1.0" encoding="UTF-16"?> ) के बिना String प्राप्त करने के लिए org.w3c.dom.Element

 DOMImplementationLS lsImpl = (DOMImplementationLS)node.getOwnerDocument().getImplementation().getFeature("LS", "3.0"); LSSerializer serializer = lsImpl.createLSSerializer(); serializer.getDomConfig().setParameter("xml-declaration", false); //by default its true, so set it to false to get String without xml-declaration String str = serializer.writeToString(node); 

यदि आपके पास XML की स्कीमा है या इसके लिए अन्यथा JAXB बाइंडिंग बना है, तो आप System.out को लिखने के लिए JAXB मार्शलर का उपयोग कर सकते हैं:

 import javax.xml.bind.*; import javax.xml.bind.annotation.*; import javax.xml.namespace.QName; @XmlRootElement public class BoundClass { @XmlAttribute private String test; @XmlElement private int x; public BoundClass() {} public BoundClass(String test) { this.test = test; } public static void main(String[] args) throws Exception { JAXBContext jxbc = JAXBContext.newInstance(BoundClass.class); Marshaller marshaller = jxbc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); marshaller.marshal(new JAXBElement(new QName("root"),BoundClass.class,new Main("test")),System.out); } } 

मानक JAXP API में समर्थित नहीं है, मैंने इस उद्देश्य के लिए JDom लाइब्रेरी का इस्तेमाल किया है। इसमें एक प्रिंटर फ़ंक्शन, फ़ॉर्मेटर विकल्प आदि शामिल हैं http://www.jdom.org/

एक लाइनर के साथ jcabi-xml कोशिश करें:

 String xml = new XMLDocument(element).toString(); 

वीटीडी-एक्सएमएल के साथ , आप कर्सर में जा सकते हैं और सेगमेंट को प्राप्त करने के लिए एक सिंगल getElementFragment कॉल कर सकते हैं (जैसा कि इसके ऑफसेट और लंबाई से दर्शाया गया है) … नीचे एक उदाहरण है

 import com.ximpleware.*; public class concatTest{ public static void main(String s1[]) throws Exception { VTDGen vg= new VTDGen(); String s = "<users><user><firstName>some </firstName><lastName> one</lastName></user></users>"; vg.setDoc(s.getBytes()); vg.parse(false); VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); ap.selectXPath("/users/user/firstName"); int i=ap.evalXPath(); if (i!=1){ long l= vn.getElementFragment(); System.out.println(" the segment is "+ vn.toString((int)l,(int)(l>>32))); } } } 

यह जेसीबी में किया जाता है:

 private String asString(Node node) { StringWriter writer = new StringWriter(); try { Transformer trans = TransformerFactory.newInstance().newTransformer(); // @checkstyle MultipleStringLiterals (1 line) trans.setOutputProperty(OutputKeys.INDENT, "yes"); trans.setOutputProperty(OutputKeys.VERSION, "1.0"); if (!(node instanceof Document)) { trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); } trans.transform(new DOMSource(node), new StreamResult(writer)); } catch (final TransformerConfigurationException ex) { throw new IllegalStateException(ex); } catch (final TransformerException ex) { throw new IllegalArgumentException(ex); } return writer.toString(); } 

और यह मेरे लिए काम करता है!