use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.
the class PSReader method readAssertReportFromXML.
/**
* Read an <assert> or a <report> element
*
* @param eAssertReport
* The source micro element. Never <code>null</code>.
* @return The created domain object. May not be <code>null</code>.
*/
@Nonnull
public PSAssertReport readAssertReportFromXML(@Nonnull final IMicroElement eAssertReport) {
final PSAssertReport ret = new PSAssertReport(eAssertReport.getLocalName().equals(CSchematronXML.ELEMENT_ASSERT));
final PSRichGroup aRichGroup = new PSRichGroup();
final PSLinkableGroup aLinkableGroup = new PSLinkableGroup();
eAssertReport.forAllAttributes((sNS, sAttrName, sVal) -> {
final String sAttrValue = _getAttributeValue(sVal);
if (sAttrName.equals(CSchematronXML.ATTR_TEST))
ret.setTest(sAttrValue);
else if (sAttrName.equals(CSchematronXML.ATTR_FLAG))
ret.setFlag(sAttrValue);
else if (sAttrName.equals(CSchematronXML.ATTR_ID))
ret.setID(sAttrValue);
else if (sAttrName.equals(CSchematronXML.ATTR_DIAGNOSTICS))
ret.setDiagnostics(sAttrValue);
else if (PSRichGroup.isRichAttribute(sAttrName))
_handleRichGroup(sAttrName, sAttrValue, aRichGroup);
else if (PSLinkableGroup.isLinkableAttribute(sAttrName))
_handleLinkableGroup(sAttrName, sAttrValue, aLinkableGroup);
else
ret.addForeignAttribute(sAttrName, sAttrValue);
});
ret.setRich(aRichGroup);
ret.setLinkable(aLinkableGroup);
eAssertReport.forAllChildren(aAssertReportChild -> {
switch(aAssertReportChild.getType()) {
case TEXT:
ret.addText(((IMicroText) aAssertReportChild).getNodeValue());
break;
case ELEMENT:
final IMicroElement eElement = (IMicroElement) aAssertReportChild;
if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
final String sLocalName = eElement.getLocalName();
if (sLocalName.equals(CSchematronXML.ELEMENT_NAME))
ret.addName(readNameFromXML(eElement));
else if (sLocalName.equals(CSchematronXML.ELEMENT_VALUE_OF))
ret.addValueOf(readValueOfFromXML(eElement));
else if (sLocalName.equals(CSchematronXML.ELEMENT_EMPH))
ret.addEmph(readEmphFromXML(eElement));
else if (sLocalName.equals(CSchematronXML.ELEMENT_DIR))
ret.addDir(readDirFromXML(eElement));
else if (sLocalName.equals(CSchematronXML.ELEMENT_SPAN))
ret.addSpan(readSpanFromXML(eElement));
else
_warn(ret, "Unsupported Schematron element '" + sLocalName + "'");
} else
ret.addForeignElement(eElement.getClone());
break;
case COMMENT:
// Ignore comments
break;
default:
_warn(ret, "Unsupported child node: " + aAssertReportChild);
}
});
return ret;
}
use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.
the class PSReader method readDirFromXML.
/**
* Read a <dir> element
*
* @param eDir
* The source micro element. Never <code>null</code>.
* @return The created domain object. May not be <code>null</code>.
*/
@Nonnull
public PSDir readDirFromXML(@Nonnull final IMicroElement eDir) {
final PSDir ret = new PSDir();
eDir.forAllAttributes((sNS, sAttrName, sVal) -> {
final String sAttrValue = _getAttributeValue(sVal);
if (sAttrName.equals(CSchematronXML.ATTR_VALUE))
ret.setValue(EDirValue.getFromIDOrNull(sAttrValue));
else
ret.addForeignAttribute(sAttrName, sAttrValue);
});
eDir.forAllChildren(aDirChild -> {
switch(aDirChild.getType()) {
case TEXT:
ret.addText(((IMicroText) aDirChild).getNodeValue());
break;
case ELEMENT:
final IMicroElement eElement = (IMicroElement) aDirChild;
if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
_warn(ret, "Unsupported Schematron element '" + eElement.getLocalName() + "'");
} else
ret.addForeignElement(eElement.getClone());
break;
case COMMENT:
// Ignore comments
break;
default:
_warn(ret, "Unsupported child node: " + aDirChild);
}
});
return ret;
}
use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.
the class PSReader method readEmphFromXML.
/**
* Read an <emph> element
*
* @param eEmph
* The source micro element. Never <code>null</code>.
* @return The created domain object. May not be <code>null</code>.
*/
@Nonnull
public PSEmph readEmphFromXML(@Nonnull final IMicroElement eEmph) {
final PSEmph ret = new PSEmph();
eEmph.forAllAttributes((sNS, sAttrName, sVal) -> {
final String sAttrValue = _getAttributeValue(sVal);
_warn(ret, "Unsupported attribute '" + sAttrName + "'='" + sAttrValue + "'");
});
eEmph.forAllChildren(aEmphChild -> {
switch(aEmphChild.getType()) {
case TEXT:
ret.addText(((IMicroText) aEmphChild).getNodeValue());
break;
case ELEMENT:
final IMicroElement eElement = (IMicroElement) aEmphChild;
if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
_warn(ret, "Unsupported Schematron element '" + eElement.getLocalName() + "'");
} else
_warn(ret, "Unsupported namespace URI '" + eElement.getNamespaceURI() + "'");
break;
case COMMENT:
// Ignore comments
break;
default:
_warn(ret, "Unsupported child node: " + aEmphChild);
}
});
return ret;
}
use of com.helger.xml.microdom.IMicroElement in project as2-server by phax.
the class AS2ServerXMLSession method loadCommandProcessors.
protected void loadCommandProcessors(@Nonnull final IMicroElement aElement) throws OpenAS2Exception {
final List<IMicroElement> aElements = aElement.getAllChildElements("commandProcessor");
s_aLogger.info(" loading " + aElements.size() + " command processors");
for (final IMicroElement processor : aElements) loadCommandProcessor(m_aCmdManager, processor);
}
use of com.helger.xml.microdom.IMicroElement in project as2-server by phax.
the class AS2ServerXMLSession method loadMessageProcessor.
protected void loadMessageProcessor(final IMicroElement eRootNode) throws OpenAS2Exception {
s_aLogger.info(" loading message processor");
final IMessageProcessor aMsgProcessor = AS2XMLHelper.createComponent(eRootNode, IMessageProcessor.class, this, m_sBaseDirectory);
setMessageProcessor(aMsgProcessor);
for (final IMicroElement eModule : eRootNode.getAllChildElements("module")) loadProcessorModule(aMsgProcessor, eModule);
}
Aggregations