के लिए एक्सएमएल का विश्लेषण कैसे करें <![CDATA[---]...
में एक्सएमएल युक्त डेटा को कैसे पार्स करें हम xml को कैसे पार्स कर सकते हैं और CDATA
में डेटा शामिल कर सकते हैं ???<![CDATA[]]>
उत्तर
public static void main(String[] args) throws Exception {
File file = new File("data.xml");
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
//if you are using this code for blackberry xml parsing
builder.setCoalescing(true);
Document doc = builder.parse(file);
NodeList nodes = doc.getElementsByTagName("topic");
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList title = element.getElementsByTagName("title");
Element line = (Element) title.item(0);
System.out.println("Title: " + getCharacterDataFromElement(line));
}
}
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "";
}
(http://www.java2s.com/Code/Java/XML/GetcharacterdataCDATAfromxmldocument.htm)
मैं कुछ ऐसा करने की बजाय कुछ करता हूं: अगर (बच्चा! = Null && (कैरेक्टरडेटा का बच्चा उदाहरण)) { वापसी ((कैरेक्टरडाटा) बच्चा) .getData(); } अन्य { वापसी e.getNodeValue(); } सीडीएटीए ब्लॉक की उपस्थिति/अनुपस्थिति को सहजता से संभालने के लिए। –
क्या आप कृपया कुछ पाठ प्रदान कर सकते हैं कि आप क्या कर रहे हैं और आप 'DocumentbuilderFactory' का उपयोग क्यों करेंगे? – Gray
वर्तमान जावा डीओएम कार्यान्वयन में आप 'e.getTextContent()' का उपयोग कर टेक्स्ट डेटा के रूप में सीडीएटीए तक पहुंच सकते हैं। [उदाहरण देखें] (http://stackoverflow.com/questions/42802202) बिना प्रकार के चेक, कास्ट, 'e.getData() '। – jschnasse
CDATA
बस कहता है कि शामिल डेटा से बच नहीं जाना चाहिए। तो, बस टैग टेक्स्ट ले लो। एक्सएमएल पार्सर को CDATA
के बिना स्पष्ट डेटा वापस करना चाहिए।
टेक्स्ट डेटा प्राप्त करना: e.getTextContent(); –
r.get().getResponseBody()
सभी पिछले जवाब एक DOM आधारित दृष्टिकोण का उपयोग कर रहे के बाद से प्रतिक्रिया शरीर
Document doc = getDomElement(r.get().getResponseBody());
NodeList nodes = doc.getElementsByTagName("Title");
for (int i = 0; i < nodes.getLength(); i++) {
Element element = (Element) nodes.item(i);
NodeList title = element.getElementsByTagName("Child tag where cdata present");
Element line = (Element) title.item(0);
System.out.println("Title: "+ getCharacterDataFromElement(line));
public static Document getDomElement(String xml) {
Document doc = null;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setCoalescing(true);
dbf.setNamespaceAware(true);
try {
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
doc = db.parse(is);
} catch (Exception e) {
e.printStackTrace();
}
return doc;
}
public static String getCharacterDataFromElement(Element e) {
Node child = e.getFirstChild();
if (child instanceof CharacterData) {
CharacterData cd = (CharacterData) child;
return cd.getData();
}
return "";
}
है। STAX का उपयोग कर स्ट्रीम आधारित दृष्टिकोण के साथ सीडीएटीए को पार्स करने का तरीका है।
उपयोग निम्नलिखित पैटर्न:
switch (EventType) {
case XMLStreamConstants.CHARACTERS:
case XMLStreamConstants.CDATA:
System.out.println(r.getText());
break;
default:
break;
}
पूरा नमूना:
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
public void readCDATAFromXMLUsingStax() {
String yourSampleFile = "/path/toYour/sample/file.xml";
XMLStreamReader r = null;
try (InputStream in =
new BufferedInputStream(new FileInputStream(yourSampleFile));) {
XMLInputFactory factory = XMLInputFactory.newInstance();
r = factory.createXMLStreamReader(in);
while (r.hasNext()) {
switch (r.getEventType()) {
case XMLStreamConstants.CHARACTERS:
case XMLStreamConstants.CDATA:
System.out.println(r.getText());
break;
default:
break;
}
r.next();
}
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
if (r != null) {
try {
r.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
}
/path/toYour/sample/file.xml
<data>
<![CDATA[ Sat Nov 19 18:50:15 2016 (1672822)]]>
<![CDATA[Sat, 19 Nov 2016 18:50:14 -0800 (PST)]]>
</data>
साथ देता है:
Sat Nov 19 18:50:15 2016 (1672822)
Sat, 19 Nov 2016 18:50:14 -0800 (PST)
- 1. <% $, <% @, <% =, <% # ... सौदा क्या है?
- 2. 'ऑपरेटर <<' के लिए 'std :: cout <<' में अस्पष्ट अधिभार <<
- 3. >>>>,> |, ||, | <, <, <<
- 4. PHP व्यंजक <<< EOB
- 5. PHP क्या <<< मतलब है?
- 6. पीएचपी: <<< ob_start बनाम
- 7. अंतर << a_value
- 8. प्रश्न <<
- 9. ईजेएस: <% = बनाम <% -
- 10. cout << स्ट्रिंगस्ट्रीम
- 11. एएसपी.Net में, <% = और <% #
- 12. << ऑपरेटर और प्रत्यावर्तन
- 13. <%! %> और <% %>
- 14. <? के बजाय php <?
- 15. ऑपरेटर बनाना << आभासी?
- 16. कॉलिंग ऑपरेटर << gdb
- 17. DOMDocument को <as & lt
- 18. ओवरलोडिंग ऑपरेटर << - सी ++
- 19. Enumerable.ToList <>() <>
- 20. का अर्थ << = और | =
- 21. कैसे बचें << - असाइन
- 22. ऑपरेटर << ओवरलोडिंग ओस्ट्रीम
- 23. <%# %> बनाम <%= %>
- 24. <<..>> = आउटपुट
- 25. मैं अदालत << MyClass
- 26. <script></script> या <script />?
- 27. "<<<" ऑपरेटर का नाम क्या है?
- 28. PHP में <<< ईओडी का उपयोग क्या है?
- 29. एक्सएमएल में <ArrayOf> की सूची <<
- 30. PHP में, "<<<" क्या दर्शाता है?
क्या आप "हाथ से" फ़ाइल को पार्स करते हैं या आप किसी XMLReader क्लास (और कौन) का उपयोग करते हैं? – Thargor