Create XML docs with hierarchy of tags and attr defined in databaste tables
Hi,
My problem is a little unique one. I want the ability to define the structure of the XML document (i.e. the hierarchy of element tags and attribute names) in the database tables. The values of tags and attributes will also be populated at runtime in tables.
Then write some generic API that reads the structure of the XML document through the database tables and spits out an XML document based on this structure and values stored in the tables.
So, basically, I want the tag names and values both to be values in the database rather than the tag names being the columns in database tables.
With this I should be able to have one procedure/function that can serve the purpose of creating XML documents with different structures by just specifying that structure in the form of database tables.
Almost all the Oracle XML utilities I read about, create XML docs based on a SQL query with tag names being columns in the database tables. Any help will be highly appreciated.
Thanks,
Monika
Which database release are you using...
The computed constructors feature of XQuery may help.
-Mark
Similar Messages
-
Has anybody tried creating and validating a XML doc with XML Schema?
Hi,
Has anybody tried creating and validating a XML doc with XML Schema?With XMLBeans, an XML document may be created from and validated with an XML schema.
-
Create xml file with values from context
Hi experts!
I am trying to implement a WD application that will have some input fields, the value of those input fields will be used to create an xml file with a certain format and then sent to a certain application.
Apart from this i want to read an xml file back from the application and then fill some other context nodes with values from the xml file.
Is there any standard used code to do this??
If not how can i do this???
Thanx in advance!!!
P.S. Points will be rewarded to all usefull answers.
Edited by: Armin Reichert on Jun 30, 2008 6:12 PM
Please stop this P.S. nonsense!Hi,
you need to create three util class for that:-
XMLHandler
XMLParser
XMLBuilder
for example in my XML two tag item will be there e.g. Title and Organizer,and from ur WebDynpro view you need to pass value for the XML tag.
And u need to call buildXML()function of builder class to generate XML, in that i have passed bean object to get the values of tags. you need to set the value in bean from the view ui context.
Code for XMLBuilder:-
Created on Apr 4, 2006
Author-Anish
This class is to created for having function for to build XML
and to get EncodedXML
and to get formated date
package com.idb.events.util;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.idb.events.Event;
public class XMLBuilder {
This attribute represents the XML version
private static final double VERSION_NUMBER = 1.0;
This attribute represents the encoding
private static final String ENCODING_TYPE = "UTF-16";
/*Begin of Function to buildXML
return: String
input: Event
public String buildXML(Event event) {
StringBuffer xmlBuilder = new StringBuffer("<?xml version=\"");
xmlBuilder.append(VERSION_NUMBER);
xmlBuilder.append("\" encoding=\"");
xmlBuilder.append(ENCODING_TYPE);
xmlBuilder.append("\" ?>");
xmlBuilder.append("<event>");
xmlBuilder.append(getEncodedXML(event.getTitle(), "title"));
xmlBuilder.append(getEncodedXML(event.getOrganizer(), "organizer"));
xmlBuilder.append("</event>");
return xmlBuilder.toString();
/End of Function to buildXML/
/*Begin of Function to get EncodedXML
return: String
input: String,String
public String getEncodedXML(String xmlString, String tag) {
StringBuffer begin = new StringBuffer("");
if ((tag != null) || (!tag.equalsIgnoreCase("null"))) {
begin.append("<").append(tag).append(">");
begin.append("<![CDATA[");
begin.append(xmlString).append("]]>").append("</").append(
tag).append(
">");
return begin.toString();
/End of Function to get EncodedXML/
/*Begin of Function to get formated date
return: String
input: Date
private final String formatDate(Date inputDateStr) {
String date;
try {
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("yyyy-MM-dd");
date = simpleDateFormat.format(inputDateStr);
} catch (Exception e) {
return "";
return date;
/End of Function to get formated date/
Code for XMLParser:-
Created on Apr 12, 2006
Author-Anish
This is a parser class
package com.idb.events.util;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import com.idb.events.Event;
import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;
public class XMLParser {
Enables namespace functionality in parser
private final boolean isNameSpaceAware = true;
Enables validation in parser
private final boolean isValidating = true;
The SAX parser used to parse the xml
private SAXParser parser;
The XML reader used by the SAX parser
private XMLReader reader;
This method creates the parser to parse the user details xml.
private void createParser()
throws SAXException, ParserConfigurationException {
// Create a JAXP SAXParserFactory and configure it
SAXParserFactory saxFactory = SAXParserFactory.newInstance();
saxFactory.setNamespaceAware(isNameSpaceAware);
saxFactory.setValidating(isValidating);
// Create a JAXP SAXParser
parser = saxFactory.newSAXParser();
// Get the encapsulated SAX XMLReader
reader = parser.getXMLReader();
// Set the ErrorHandler
This method is used to collect the user details.
public Event getEvent(
String newsXML,
XMLHandler xmlHandler,
IWDMessageManager mgr)
throws SAXException, ParserConfigurationException, IOException {
//create the parser, if not already done
if (parser == null) {
this.createParser();
//set the parser handler to extract the
reader.setErrorHandler(xmlHandler);
reader.setContentHandler(xmlHandler);
InputSource source =
new InputSource(new ByteArrayInputStream(newsXML.getBytes()));
reader.parse(source);
//return the results of the parse
return xmlHandler.getEvent(mgr);
Code for XMLHandler:-
Created on Apr 12, 2006
Author-Anish
This is a parser class
package com.idb.events.util;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import com.idb.events.Event;
Created on Apr 12, 2006
Author-Anish
*This handler class is created to have constant value for variables and function for get events,
character values for bean variable,
parsing thr date ......etc
package com.idb.events.util;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import java.util.*;
import com.idb.events.Event;
import com.sap.tc.webdynpro.progmodel.api.IWDMessageManager;
public class XMLHandler extends DefaultHandler {
private static final String TITLE = "title";
private static final String ORGANIZER = "organizer";
IWDMessageManager manager;
private Event events;
private String tagName;
public void setManager(IWDMessageManager mgr) {
manager = mgr;
This function is created to get events
public Event getEvent(IWDMessageManager mgr) {
manager = mgr;
return this.events;
This function is created to get character for setting values through event's bean setter method
public void characters(char[] charArray, int startVal, int length)
throws SAXException {
String tagValue = new String(charArray, startVal, length);
if (TITLE.equals(this.tagName)) {
this.events.setTitle(tagValue);
if (ORGANIZER.equals(this.tagName)) {
String orgName = tagValue;
try {
orgName = getOrgName(orgName);
} catch (Exception ex) {
this.events.setOrganizer(orgName);
This function is created to parse boolean.
private final boolean parseBoolean(String inputBooleanStr) {
boolean b;
if (inputBooleanStr.equals("true")) {
b = true;
} else {
b = false;
return b;
This function is used to call the super constructor.
public void endElement(String uri, String localName, String qName)
throws SAXException {
super.endElement(uri, localName, qName);
/* (non-Javadoc)
@see org.xml.sax.ErrorHandler#fatalError(org.xml.sax.SAXParseException)
This function is used to call the super constructor.
public void fatalError(SAXParseException e) throws SAXException {
super.fatalError(e);
This function is created to set the elements base on the tag name.
public void startElement(
String uri,
String localName,
String qName,
Attributes attributes)
throws SAXException {
this.tagName = localName;
if (ROOT.equals(tagName)) {
this.events = new Event();
public static void main(String a[]) {
String cntry = "Nigeria";
XMLHandler xml = new XMLHandler();
ArrayList engList = new ArrayList();
engList = xml.getCountries();
ArrayList arList = xml.getArabicCountries();
int engIndex = engList.indexOf(cntry);
System.out.println("engIndex :: " + engIndex);
String arCntryName = (String) arList.get(engIndex);
System.out.println(
">>>>>>>>>>>>>>>>>>>>" + xml.getArabicCountryName(cntry));
Hope that may help you.
If need any help , you are most welcome.
Regards,
Deepak -
Create xml file with nested internla table or with header & item tables
Hi I have a requirement like, I need to create an xml file for header and item details. For 1 header there may be multiple line items.
I did search in forums some where I came to know that we can use XSL:IF to achieve this. but I could not able to do this.
I tried with using nested internal tables also but now luck.
can anybody please suggest how can we create xml for header and item detials.
<xsl:transform version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sap="http://www.sap.com/sapxsl"
xmlns:asx="http://www.sap.com/abapxml"
exclude-result-prefixes="asx"
>
<xsl:template match="/">
<OrbisomRequest>
<xsl:attribute name="Version">
<xsl:value-of select="11.1"/>
</xsl:attribute>
<xsl:attribute name="IssuerID">
<xsl:value-of select="1"/>
</xsl:attribute>
<xsl:for-each select="asx:abap[1]/asx:values[1]/T_FINAL[1]/*">
<CreateApprovedPurchaseRequest
RerquestID="{VBLNR}"
CommonName="User1"
Amount="{WRBTR}"
Comment="TestComment"
CurrencyCode="978"
PurchaseType="All"
SupplierName="All"
VCardAlias="PurchaseCard"
ValidFrom="1M"
CurrencyType="B">
<CDFs>
<Invoice> <xsl:value-of select="BELNR"/> </Invoice>
<Amount> <xsl:value-of select="WRBTR"/> </Amount>
</CDFs>
</CreateApprovedPurchaseRequest>
</xsl:for-each>
</OrbisomRequest>
</xsl:template>
</xsl:transform>
here belnr and wrbtr will be my item details. for each payment document I can have multiple invoices. in CDF I need to display the invoices for that particular payment document.
what conditions can I put there before CDFs to make the item internal table to loop based on header internal table.
Regards,
Ranganadh.Looks like you have already created the transformation "Z_ID"
Take a look at the following thread, it answers many of the questions you have asked:
[ABAP data to XML conv with UTF-8 encoding and custom namespace|Re: ABAP data to XML conv with UTF-8 encoding and custom namespace;
Che -
Creating XML files with the DME
Hi All,
I'm working on an integration project between my company and HSBC, they are requesting that we supply our AP payment files for foreign currency in XML format.
I have some limited experience with the DME and know it can create XML files, however, the elements available for XML files are different to standard flat files. Also it doesnt seem like I can create files with multiple levels? e.g.
<InitgPty>
......... <Id>
............... <OrgId>
...................... <BkPtyId>ABC00103003</BkPtyId>
.............. </OrgId>
........ </Id>
</InitgPty>
Does anyone have any documentation or experience with creating XML files with DME?
thanks
Phil.Hi,
Please ask any Implementation team in ABAB or Report painter team with your friends,
Thanks and REgards
N.Soma Sundaram -
Generete xml doc with dtd form
Hi,
I am trying to generate xml doc based on dtd kind format.
I use following code to get my xml doc is ok based on dtd like
-----------dtd file---------------
<!ELEMENT client_data (client_job*, person*)>
<!ELEMENT client_job (job_cd, job_title?, primary_responsibilities?, grade_cd?, br_job_cd, eeo_job_group_id, effective_date?, end_date?)>
<!ATTLIST client_job errMsg CDATA #IMPLIED>
<!ATTLIST client_job deleteFlag ( Y | N ) 'N'>
<!ELEMENT job_cd (#PCDATA)>
<!ELEMENT job_title (#PCDATA)>
<!ELEMENT primary_responsibilities (#PCDATA)>
<!ELEMENT br_job_cd (#PCDATA)>
<!ELEMENT eeo_job_group_id (#PCDATA)>
-----------------end dtd--------------
OracleXMLQuery qry = new OracleXMLQuery(conn, sql);
qry.setRowsetTag("client_data");
qry.setRowIdAttrName(null);
// qry.useNullAttributeIndicator(true);
qry.useLowerCaseTagNames();
qry.setRowTag("client_job");
xmlDocToReturn = qry.getXMLDOM();
But if my dtd like following, i.g. has tree level, and data from multiple tables, the above code doesn't work for thes case
--------------tree level dtd----------------
<!ELEMENT person (person_name)>
<!ATTLIST person person_id CDATA #REQUIRED>
<!ATTLIST person hire_date CDATA #IMPLIED>
<!ATTLIST person effective_date CDATA #IMPLIED>
<!ATTLIST person end_date CDATA #IMPLIED>
<!ELEMENT person_name (formatted_name*, given_name*, prefered_given_name?, middle_name?, family_name*, affix*)>
<!ELEMENT formatted_name EMPTY>
<!ATTLIST formatted_name type ( presentation | legal | sortOrder) 'presentation'>
<!ELEMENT given_name (#PCDATA)>
<!ELEMENT prefered_given_name (#PCDATA)>
<!ELEMENT middle_name (#PCDATA)>
<!ELEMENT family_name (#PCDATA)>
<!ATTLIST family_name primary ( true | false | undefined ) 'undefined'>
-----------------end dtd -------------------
I try to use XMLDocumentFragment to create xml doc and appendChild , but the xml doc is not the format of the dtd required. Can you give me a Java sample?
Thanks in advance.
YanWhy don't you use XSLT?
-
Created a document with FM Author 12 and added a template in FM12 to the document
Created a document with FM Author 12 and added a template in FM12 to the document. Can't open the document again in FM Author 12 "This file does not have a program associated with it for performing this action. Please install a program or, if one is already installed, create an association in the Default Programs control panel".
Should both programs be in "Authoring" mode?
-
Linking Access tables, creating a query with using both Access and Oracle
Hello,
I am using 3.0.04.34 version Oracle Developer. I am supposed to create a script/procedure to use both Access tables and oracle tables together. There is an option in developer to copy the access tables into oracle. But it doesn't help me. Because when we updated the access tables
the copied ones are not be updated. How can I created a linked access tables to oracle and create a query with using both access and oracle table together.
I will appreciate if you guys help me. I look forward to hearing from you guys.
Thanks,
PinarPinar,
to be able to query MS Access tables in Oracle you need an additional product, the Oracle Database Gateway for ODBC. It allows you to link any foreign database into an Oracle database using a suitable ODBC driver. You can then access the MS Access tables through a database link based on the Database Gateway for ODBC. This will also allow you to join local Oracle and remote MS Access tables from your Oracle database.
There's a note on My Oracle Support which gives you more details:Document 233876.1 Options for Connecting to Foreign Data Stores and Non-Oracle Databases - For example - DB2, SQL*Server, Sybase, Informix, Teradata, MySQL
And there's also a dedicated Forum: Heterogeneous Connectivity -
I am creating a slideshow with elements using photos and videos but the video sound doesnt play?
Hello jive
I am playing it back in the slideshow editor/setting up part of
programme where you determine photos/video to be included gaps between
slides, music to play etc This goes through each phot and when comes
to a video the background sound doesnt play, I am using windows 7 and
elements 10.
regards gins51 -
Creating a bridge with airport extreme (base) and airport express
i am having trouble creating a bridge with airport extreme (base) and airport express. i got the airport express to connect to my network. Airtunes sees it fine. i have an iMac (running Tiger) connected to the airport express via ethernet which i was hoping to get internet on (the iMac doesn't not have built in wireless and i had a spare airport express). now the airport express is no longer visible to the airport setup assistant on that iMac. but, like i mentioned, Airtunes is working fine, and the light is green.
i'm new to the wireless stuff. i am sure i just missed a step. how do i get the iMac to connect to the internet via my airport express bridging to my airport extreme wireless network?
your help is appreciated.You can do this with the equipment you have. Configure the AirPort Extreme base station (AEBS) to act as a WDS main base station and configure the AirPort Express (AX) to act as a WDS remote base station. That will allow you to use the Ethernet port on the AX.
Unfortunately WDS also causes the available wireless bandwidth to be cut in half. -
Re: to create outbound file with multiple header ,detail and trailor in informatica
Dear Mohan Prakash, Please mentation The Target Which Format you need. Please let me know. Thanks & RegardsKasireddy+966545281845
hi I want to create a file with muiltple header detail and trailorSample of my file 1F99500094959 5F99000000999911025F99000000999912025F99000000999913029F99500094959 1G83341002729803 5G83000000999918020109G83341002729803 1G83910377940 5G830000009999190201011050003522029G83910377940 T20110720000000900000006750{ In this file 1 is header and 5 is detail and 9 is trailer and in last T segment is also trailerI have any idea to create seperate 3 files and in lastconcatenate all file with the help of unixbut in my case data is so large (in millions) this approach is not use full please suggest my any ideaHow to create VSAM file
-
Hi
how to create a external content type for Read and Update data from two tables in sqlserver using sharepoint designer 2010
i created a bcs service using centraladministration site
i have two tables in sqlserver
1)Employee
-empno
-firstname
-lastname
2)EmpDepartment
-empno
-deptno
-location
i want to just create a list to display employee details from two tables
empid firstname deptno location
and same time update in two tables
adilWhen I try to create an external content type based on a view (AdventureWorks2012.vSalesPerson) - I can display the data in an external list. When I attempt to edit it, I get an error:
External List fails when attached to a SQL view
Sorry, something went wrong
Failed to update a list item for this external list based on the Entity (External Content Type) 'SalesForce' in EntityNamespace 'http://xxxxxxxx'. Details: The query against the database caused an error.
I can edit the view in SQL Manager, so it seems strange that it fails.
Any advice would be greatly GREATLY appreciated.
Thanks,
Randy -
Is it possible to create indexes & use them on xml docs with namespaces?
I have put an XML doc in a BDBXML container which looks like this:
*<ns1:note xmlns:ns1="http://www.testsch.org/ns">*
*<ns1:to>Eric</ns1:to>*
*<ns1:from>Brendan</ns1:from>*
*<ns1:msg>How r u?</ns1:msg>*
*</ns1:note>*
Now, I am creating an index on the element "to", as:
addIndex "ns1" "to" node-element-equality-string
Though the index has been shown as getting created using the listIndexes command, if I lookup that index with the following command:
lookupIndex node-element-equality-string "ns1" "to"
the output is:
*0 objects returned for eager index lookup 'node-element-equality-string'*
Whereas, if I do the whole procedure without the namespaces in the document & the commands, the result is fine:
*1 object returned for eager index lookup 'node-element-equality-string'*
Can someone please tell me whether using namespaces, the indexes can be created or not? If yes, how?
Thanks,
Dev
Edited by: user11871332 on Sep 7, 2009 3:53 PMHi Dev,
When using XML, the prefix for the namespace is really just syntactic sugar. The actual namespace in your example is "http://www.testsch.org/ns", and that's the value that you need to use when creating your index:
addIndex "http://www.testsch.org/ns" "to" node-element-equality-stringJohn -
Adding an XML doc with repeating tags
Hello,
Can anyone tell me how I take an XML document with a tag that can appear from 0-N times and map it to a database table? I am currently using a supertable and then using triggers to move data to the appropriate spot but am stuck on how to map tags that don't correspond 1-1.
My structure is like
<product>
<name>
<model>
<cost>
<feature>* (0-N)
<spec>* (0-N)
</product>
Thanks.
nullDo a getElementsByTagName on a node and do a
insert on each node found. -
What's the best way to create XML file with a schema from a database table?
Hi,
I want to create an XML file from a database table (which has over 600 columns) using XML schema (.xsd file). I want to know the best way to do this.
The output XML file is NOT a direct data dump from the DB table, there�re some logic around it, such as the XML file has some hierarchy with repeating tags.
I have done this using JAXB by creating Java classes form XML schema, but I don�t want to map 600 DB columns to these Java classes manually, and loop through the record set to create repeating tags.
I know there are few tools around now like MapForce (Altova), how do people do these now?
Thanks,
ChandiCan you use a schema when we compose XML doc from Database tables?
Actually, I'm using SQL Server (sorry, wrong forum). But, I thought a Java tool would have a solution for me.
Maybe you are looking for
-
How can I get a stop/start button the multimedia flash player in Acrobat 9 pro
I have successfully embedded a flash movie in my pdf. It starts when I click on it but does not stop until I reloaded the pdf. Is there a way to add stop start buttons?
-
Need help on POPUP screen in web ui
Hi Experts, I have created popup screen in the eh_onsave method .Now it is triggering, in this popup it is displaying YES, NO and CANEL buttons. But i want to change the standard buttons descriptions. how to do ? I have created custom buttons and dis
-
Hello, After creating the SC with limit items, in the soco we create a held PO so that we could change the vendor. Say SC with 9000 quantity price 1 SEK. 1. In the held PO for the user is changing the currency to EUR and reducing the corresponding qu
-
Disabling the dropdown LOV for existing records in SQL updateable report
Hi All - I have a SQL updateable report which has 3 columns. One of the column is a named-LOV. This report also provides the functionality of inserting new rows. Is there a way to only show the named-LOV dropdown list for only the new records to be i
-
Graphics card issue recognition issue
I purhcased the 15", 16G, i7 ect. Standard, no upgrades. On the site it says it has the Intel Iris graphics card, AS WELL as the NIVIDIA Geforce, but when I go to "about this system" it lists as the Iris card. Is this just due to the automatic graphi