-
Notifications
You must be signed in to change notification settings - Fork 1
XPaths
Find the child-siblink elements of an parent element, Untill other element comes.
<div id="one">
<p>a</p>
<p>b</p>
<p>c</p>
<h2> node type</h2>
<p>d</p>
<p>e</p>
</div>
<div id="two">
<p>aa</p>
<p>b</p>
<label>This Is A Test</label>
<p>c</p>
</div>
Out Put XPath using intersect:
//div[2]/child::p intersect //div[2]/child::*[name()!='p'][1]/preceding-sibling::p
Element followed by different class, whose count is 1
<tr class="other_label"></tr>
<tr class="other_label"></tr>
<tr class="facts_label"></tr>
<tr class="facts_label"></tr>
<tr class="other_label"></tr> # Select this
<tr class="other_label"></tr> # Select this
<tr class="facts_label"></tr>
<tr class="other_label"></tr>
<tr class="other_label"></tr>
Tested Xpath
//tr[ @class='other_label' and count(following-sibling::tr[@class='facts_label'])=1 ]
MyPost StackOverflow: Read XML file using XPathFactory, SAXParserFactory and StAX (JSR-173).
<dependency groupId:artifactId:version />
< wsdl4j:wsdl4j:1.6.2 />
< xalan:xalan:2.7.1 />
< xerces:xercesImpl:2.11.0 />
< net.sf.saxon:Saxon-HE:9.7.0-15 />public final class XMLHelper { // /text(), /@id
private final static Log log = LogFactory.getLog(XMLHelper.class);
/**
* Private constructor, so this class cannot be instantiated.
*/
private XMLHelper() {
}
public static String encodeXMLSpecialChars(String str) {
str = str.replaceAll("&", "&"); // & --> &
str = str.replaceAll("<", "<"); // < --> <
str = str.replaceAll(">", ">"); // > --> >
str = str.replaceAll("'", "'"); // ' --> '
str = str.replaceAll("\"", """); // " --> "
return str;
}
public static String decodeXMLSpecialChars(String str) {
str = str.replaceAll("&", "&");
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">");
str = str.replaceAll("'", "'");
str = str.replaceAll(""", "\"");
return str;
}
/**
* Reader config = new FileReader(new File("D:/Yash/xmltest.xml"));
* Document configuration = XMLHelper.parseReader(config);
*
* Returns a DOM XML Document for a Reader. This method simply encapsulates
* logistic overhead for building a parser, parse data and catch exceptions.
*
* @param xmldata A reader containing the data.
* @return DOM XML Document containing the data.
*/
public static Document parseReader(Reader xmldata) {
Document result = null;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
// factory.setIgnoringElementContentWhitespace(false);
result = builder.parse(new InputSource(xmldata));
} catch (Exception e) {
throw new Error("Error while Parsing: " + e.getMessage(), e);
}
return result;
}
/**
* Returns a DOM XML Document for a String. This method simply encapsulates
* logistic overhead for building a parser, parse data and catch exceptions.
*
* @param xml the String to parse
* @return an XML document as DOM tree.
*/
public static Document parseString(String xml) {
Document result = null;
StringReader stringReader = null;
InputSource source = null;
DocumentBuilder builder = null;
try {
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
stringReader = new StringReader(xml);
source = new InputSource(stringReader);
result = builder.parse(source);
} catch (Exception e) {
log.error(e, e);
} finally {
if (stringReader != null) {
stringReader.close();
}
stringReader = null;
source = null;
builder = null;
}
return result;
}
public static String toString(Node document, boolean omitXmlDeclaration) throws TransformerException, IOException {
StringWriter stringWriter = new StringWriter();
StreamResult streamResult = new StreamResult(stringWriter);
TransformerFactory transformerFactory = (SAXTransformerFactory) new net.sf.saxon.TransformerFactoryImpl();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, omitXmlDeclaration ? "yes" : "no");
transformer.transform(new DOMSource(document), streamResult);
String outputStr=stringWriter.toString();
stringWriter.close();
return outputStr;
}
public static String getXmlContentAsString(Node node) throws TransformerException, IOException {
StringBuilder stringBuilder = new StringBuilder();
NodeList childNodes = node.getChildNodes();
int length = childNodes.getLength();
for (int i = 0; i < length; i++) {
stringBuilder.append(toString(childNodes.item(i), true));
}
return stringBuilder.toString();
}
public static Node getNode(Node context, String xpath) {
Node result = null;
try {
result = XPathAPI.selectSingleNode(context, xpath);
} catch (TransformerException e) {
throw new Error("TransformerException: " + e.getMessage(), e);
}
return result;
}
public static String getNodeAsString(Node context, String xpath) {
Node node = getNode(context, xpath);
String result = null;
if (node == null) {
result = null;
} else {
result = node.getNodeValue();
}
return result;
}
public static NodeList getNodesList(Node context, String xpath) {
NodeList result = null;
try {
result = XPathAPI.selectNodeList(context, xpath);
} catch (TransformerException e) {
throw new Error("TransformerException: " + e.getMessage(), e);
}
return result;
}
public static Map getValuesMap(Node context, String xpath, String keyTag, String valueTag) {
NodeList nl = XMLHelper.getNodesList(context, xpath);
Map values = new LinkedHashMap<>();
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);
String value = XMLHelper.getNodeAsString(n, "@" + valueTag);
String key = XMLHelper.getNodeAsString(n, "@" + keyTag);
values.put(key, value);
}
return values;
}
public static String extractTextFromXml(String xml) {
String result = xml.replaceAll("<[^>]+>", "");
return result.replaceAll("\\s+", " ").trim();
}
public static String serializeXML(Document doc, boolean indent, boolean omitXmlDeclaration) {
Transformer transformer;
try {
transformer = TransformerFactory.newInstance().newTransformer();
if (indent)
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
if (omitXmlDeclaration)
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
// initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
return xmlString;
} catch (Exception e) {
throw new Error("XML Library malfunction: " + e.getMessage(), e);
}
}
}In a class-based object-oriented language, in general, state is carried by instances, methods are carried by classes, and inheritance is only of structure and behavior. Basic, Refactoring Techniques
Method signature: It consists of method name and parameter list (number/type/order of the parameters). methodName(parametersList y). An instance method in a subclass with the same signature and return type as an instance method in the super-class overrides the super-class's method.
Java OOP concepts
Class - Collection of a common features of a group of object [static/instance Fields, blocks and Methods]
Object - Instance of a class (instance fields)
Abstraction - Process of hiding complex info and providing required info like API, Marker Interfaces ...
Encapsulation(Security) - Class Binding up with data members(fields) and member functions.
Inheritance (Reusability by placing common code in single class)
1. Multilevel - {A -> B -> C} 2. Multiple - Diamond problem {A <- (B) -> C} [Java not supports] 3. Cyclic {A <-> B} [Java not supports]
* Is-A Relation - Class A extends B
* Hash-A Relation - Class A { B obj = new B(); } - (Composition/Aggregation)
Polymorphism (Flexibility) 1. Compile-Time Overloading 2. Runtime Overriding [Greek - "many forms"]
int[] arr = {1,2,3}; int arrLength = arr.length; // Fixed length of sequential blocks to hold same data type
String str = "Yash"; int strLength = str.length(); // Immutable Object value can't be changed.
List<?> collections = new ArrayList<String>(); int collectionGroupSize = collections.size();
Map<?, ?> mapEntry = new HashMap<String, String>();
Set<?> keySet = mapEntry.keySet(); // Set of Key's
Set<?> entrySet = mapEntry.entrySet(); // Set of Entries [Key, Value]
// Immutable Objects once created they can't be modified. final class Integer/String/Employee
Integer val = Integer.valueOf("100"); String str2 = String.valueOf(100); // Immutable classes
final class Employee { // All Wrapper classes, java.util.UUID, java.io.File ...
private final String empName; // Field as Final(values can be assigned only once) Only getter functions.
public Employee(String name) { this.empName = name; }
} Native Java Code for Hashtable.h, Hashtable.cpp
SQL API.
You can check your current JDK and JRE versions on your command prompt respectively,
- JDK
javac -version [C:\Program Files\Java\jdk1.8.0_121\bin]o/p:javac 1.8.0_121 - JRE
java -version[C:\Program Files\Java\jdk1.8.0_121\bin]o/P:java version "1.8.0_102"
JAVA_HOME - Must be set to JDK otherwise maven projects leads to compilation error. [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? C:\Softwares\OpenJDK\, 7-zip
Fatal error compiling: invalid target release: JRE and JDK must be of same version
1.8.0.XXX
Disable TLS 1.0 and 1.1
security-libs/javax.net.ssl: TLS 1.0 and 1.1 are versions of the TLS protocol that are no longer considered secure and have been superseded by more secure and modern versions (TLS 1.2 and 1.3).
Core Java
-
Java Programming Language Basics
- Object, Class, Encapsulation, Interface, Inheritance, Polymorphism (Method Overloading, Overriding)
- JVM Architecture, Memory Areas
- JVM Class Loader SubSystem
- Core Java Interview Questions & Programs
- Interview Concepts
Stack Posts
- Comparable vs Comparator
- Collections and Arrays
-
String, StringBuffer, and StringBuilder
- String reverse
- Remove single char
- File data to String
- Unicode equality check Spacing entities
- split(String regex, int limit)
- Longest String of an array
-
Object Serialization
- Interface's Serializable vs Externalizable
- Transient Keyword
-
implements Runnablevsextends Thread - JSON
- Files,
Logging API- Append text to Existing file
- Counting number of words in a file
- Properties
- Properties with reference key