Getting an XML string into BI
Hi,
I am loading data through flat files and have a field in te flat file which is an XML string. It is esentially a combination of characterisitic value embedded in one string. What should i do to pick specific values from the string and put it into a BW field. Can you give me an example, if we have to write a routine for that
Thanks
Rashmi.
The issue got resolved with a routine in the transformations where specific characters were chosen.
Similar Messages
-
How to get an xml string into a Document w/o escaping mark-up characters?
Hi,
I am using one of the latest xerces using Java. I am pretty sure I am using xerces-2.
I have an existing Document and I am trying to add more content to it. The new content itself is xml string. I am trying to insert this xml string into the document using document.createTextNode. I am able to insert, but somewhere it is escaping the mark-up characters (<,>,etc). When I convert the document into String, I can see, for example, <userData> instead of <userData>.
There is an alternative option to accomplish this by creating a new document with this xml string, get the root element, import this element into my document. Execution time for this procedure is very high - means, this is very bad in terms of time-wise performance.
Can any help on how to accomplish this (bringing an xml string into a document without escaping mark-up characters) in time-efficient way.So you want to treat the contents of the string as XML rather than as text? Then you have to parse it.
Or if your reason for asking is just that you don't like the look of escaped text, then use a CDATA section to contain the text. -
How to get an XML string from a Java Bean without wrting to a file first ?
I know we can save a Java Bean to an XML file with XMLEncoder and then read it back with XMLDecoder.
But how can I get an XML string of a Java Bean without writing to a file first ?
For instance :
My_Class A_Class = new My_Class("a",1,2,"Z", ...);
String XML_String_Of_The_Class = an XML representation of A_Class ?
Of course I can save it to a file with XMLEncoder, and read it in using XMLDecoder, then delete the file, I wonder if it is possible to skip all that and get the XML string directly ?
FrankI think so too, but I am trying to send the object to a servlet as shown below, since I don't know how to send an object to a servlet, I can only turn it into a string and reconstruct it back to an object on the server side after receiving it :
import java.io.*;
import java.net.*;
import java.util.*;
class Servlet_Message // Send a message to an HTTP servlet. The protocol is a GET or POST request with a URLEncoded string holding the arguments sent as name=value pairs.
public static int GET=0;
public static int POST=1;
private URL servlet;
// the URL of the servlet to send messages to
public Servlet_Message(URL servlet) { this.servlet=servlet; }
public String sendMessage(Properties args) throws IOException { return sendMessage(args,POST); }
// Send the request. Return the input stream with the response if the request succeeds.
// @param args the arguments to send to the servlet
// @param method GET or POST
// @exception IOException if error sending request
// @return the response from the servlet to this message
public String sendMessage(Properties args,int method) throws IOException
String Input_Line;
StringBuffer Result_Buf=new StringBuffer();
// Set this up any way you want -- POST can be used for all calls, but request headers
// cannot be set in JDK 1.0.2 so the query string still must be used to pass arguments.
if (method==GET)
URL url=new URL(servlet.toExternalForm()+"?"+toEncodedString(args));
BufferedReader in=new BufferedReader(new InputStreamReader(url.openStream()));
while ((Input_Line=in.readLine()) != null) Result_Buf.append(Input_Line+"\n");
else
URLConnection conn=servlet.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
// Work around a Netscape bug
conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
// POST the request data (html form encoded)
DataOutputStream out=new DataOutputStream(conn.getOutputStream());
if (args!=null && args.size()>0)
out.writeBytes(toEncodedString(args));
// System.out.println("ServletMessage args: "+args);
// System.out.println("ServletMessage toEncString args: "+toEncodedString(args));
BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((Input_Line=in.readLine()) != null) Result_Buf.append(Input_Line+"\n");
out.flush();
out.close(); // ESSENTIAL for this to work!
return Result_Buf.toString(); // Read the POST response data
// Encode the arguments in the property set as a URL-encoded string. Multiple name=value pairs are separated by ampersands.
// @return the URLEncoded string with name=value pairs
public String toEncodedString(Properties args)
StringBuffer sb=new StringBuffer();
if (args!=null)
String sep="";
Enumeration names=args.propertyNames();
while (names.hasMoreElements())
String name=(String)names.nextElement();
try { sb.append(sep+URLEncoder.encode(name,"UTF-8")+"="+URLEncoder.encode(args.getProperty(name),"UTF-8")); }
// try { sb.append(sep+URLEncoder.encode(name,"UTF-16")+"="+URLEncoder.encode(args.getProperty(name),"UTF-16")); }
catch (UnsupportedEncodingException e) { System.out.println(e); }
sep="&";
return sb.toString();
}As shown above the servlet need to encode a string.
Now my question becomes :
<1> Is it possible to send an object to a servlet, if so how ? And at the receiving end how to get it back to an object ?
<2> If it can't be done, how can I be sure to encode the string in the right format to send it over to the servlet ?
Frank -
REG: WRITE XML STRING INTO XML FILE
Hi All, I have a XML FILE on PC. I get a xml string from my server.
My Task: I want to append the xml string coming from the server into the existing xml file at a particular Node. Given below is my code :
String xmlString = baos.toString();
DocumentBuilder db4XMLString = docBuilderFactory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(xmlString));
Document doc4XMLString = db4XMLString.parse(inStream);
Node root4XMLString = doc4XMLString.getElementsByTagName("epg").item(0);
doc.appendChild(doc.importNode(root4XMLString, true));
File file = new File(Constant.XMLFILEPATH);
Result result = new StreamResult(file.toURI().getPath());
Source source = new DOMSource(doc);
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);But, wen i run my application I get following exception:
The markup in the document following the root element must be well-formed.
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
Is that my XML string is not well formed. Is it so then please let me how to convert my xml string into well formed XML data.
Please help me out.
Thanking You.There are many reasons why xmlString could be not well formed. There is no magic recipe for making it well formed: just look at it and see why it is not parseable.
Note that this line:
String xmlString = baos.toString();can be problematic if you have non ASCII-7 characters in your XML document. baos could then contain a byte representation of these characters in one particular encoding, but, since you use the .toString() method that relies on the default encoding of your system, you can end up with a mismatch and garbage in your XML. -
Hi All,
Can you please let me know for any sample code in xslt/java mapping for converting XML string into XML. We use SAP Pi 7.0
My XML string starts like this
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:MT_ReceiverFileStructure <namespace>"><Output><?xml version="1.0" encoding="ISO-8859-9"?><?xml-stylesheet type="text/xsl" href="<xsl>"?><Tarih_Date Tarih="11.09.2014" Date="09/11/2014>
Thanks,
PavithraThanks Praveen. It worked.
However, the xml i have is an extract from a exchange rate URL and it has the reference to a xsl in it as below
<?xml version="1.0" encoding="ISO-8859-9"?><?xml-stylesheet type="text/xsl" href="<ABC.xsl>"?>.
So there is an error in sxmb_moni. Is it possible to remove this. -
A class to format an XML string into indented xml code
I am looking for a class or a piece of code to format an XML string into indented xml code
for example: an XML string as follows
<servlet><servlet-name>Login</servlet-name>servlet-class>ucs.merch.client.system.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>Login</servlet-name>
to format into :
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>ucs.merch.client.system.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
e-mail : [email protected]Xerces has a class called OutputFormat
If you have your XML document in memory, you can format it using the method setIndenting(true) on the OutputFormat class. The following is an example:
assuming xmlDoc is our document and fileName is the name of the file we wish to write to:
OutputFormat format = new OutputFormat(xmlDoc);
// setup output file name
PrintWriter printwriter = new PrintWriter(new FileWriter(fileName, false));
// construct an XMLSerializer for writing the document
XMLSerializer serializer = new XMLSerializer( printwriter, format );
// Ensure output is indented correctly...
format.setIndenting(true);
// set serializer as a DOM Serializer
serializer.asDOMSerializer();
// serialize the document
serializer.serialize(xmlDoc);
hope this helps!
Rob. -
How to get an XML string store in CLOB or LONG column ?
How to get an XML string store in CLOB or LONG column ?
We use XSU with the following command
String str = qry.getXMLString();
but all the "<" are replace by "<"
It's impossible to parse the result for XSLT transformation
Thank's for your help
Denis Calvayrac
Example :
in the column "TT_NAME"
"<name><firstname>aaa</<firstname><lastname>bbb</lastname></name>
I want this result
<TT_NAME>
<name>
<firstname>aaa</firstname>
<lastname>bbb</lastname>
</name>
</TT_NAME>
but, I have this result
<TT_NAME>
<name>
<firstname>aaa</firstname>
<lastname>bbb</lastname>
</name>
</TT_NAME>Can you post some of your code, so I can take a look ?
Thanks -
Hi all,
I have a question here regarding converting XML string into a DOM document.
How can I do this in Java?
The Document.Parse() methods do not have one that takes in String as its parameter.
I'm not sure what is the best way to do this in Java.
Any help is greatly appreciated.
Thank you in advance.
regards,
SeanConvert XML String to Document with StringReader.
String xmlString;
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString))); -
Convert XML string into an abap format date and time
Hi,
Does anyone know of a method or a function module in ABAP which converts XML string into an abap format date and time.
Here is a part of the xml that I want to convert.
<ns2:EventDateTime>2009-07-02T10:13:45+10:00</ns2:EventDateTime>
<ns2:EventMessageTransmissionDateTime>2009-07-02T10:13:45.987+10:00</ns2:EventMessageTransmissionDateTime>
Currently EventDateTime and EventMessageTransmissionDateTime are type XSDDATETIME_Z and these are converted to proper dates and times. We will be changing these fields to a STRING instead of XSDDATETIME_Z. The reason for this is to make the field more versatile. The customer would be receiving dates with Zulu (2009-09-23T12:00:00Z), with offsets (2009-09-23T12:00:00+10:00/-10:00) and just local timestamp (2009-09-23T12:00:00). With this, we need to make the date fields as string
to be able to accept the various date formats (esp. the local timestamp).
I am looking for a standard function module or method that will convert the xml string to a proper date and time abap format.
Would appreciate anyone's help!
Thanks.
Edited by: eunice ocson on Jul 13, 2009 1:49 AM
Edited by: eunice ocson on Jul 13, 2009 1:50 AM
Edited by: eunice ocson on Jul 13, 2009 1:51 AM
Edited by: eunice ocson on Jul 13, 2009 1:51 AMHi Eunice
Use the FM 'SMUM_XML_PARSE'
for more info
[Convert XML string to ABAP|XML String to ABAP or GUI]
hope it helps you.
Thanks!! -
Inserting XML String into Table with help of Stored Proc
I will be getting XML String from JAVA, which I have to insert in Table A, XML String is as follows
<?xml version = '1.0'?>
< TableA>
<mappings Record="3">
< MESSAGEID >1</ MESSAGEID >
< MESSAGE >This is available at your address!</ MESSAGE>
</mappings>
<mappings Record="3">
< MESSAGEID >2</ MESSAGEID>
< MESSAGE >This isn’t available at your address. </ MESSAGE>
</mappings>
</ TableA >
Table Structure*
MESSAGEID VARCHAR2(15 BYTE)
MESSAGE VARCHAR2(500 BYTE)
This is the stored procedure which I have written to insert data into TableA, V_MESSAGE will be input parameter for inserting XML String
create or replace procedure AP_DBI_PS_MESSAGE_INSERT
V_MESSAGE VARCHAR2(1024)
AS
declare
charString varchar2(80);
finalStr varchar2(4000) := null;
rowsp integer;
V_FILEHANDLE UTL_FILE.FILE_TYPE;
begin
-- the name of the table as specified in our DTD
xmlgen.setRowsetTag('TableA');
-- the name of the data set as specified in our DTD
xmlgen.setRowTag('mappings');
-- for getting the output on the screen
dbms_output.enable(1000000);
-- open the XML document in read only mode
v_FileHandle := utl_file.fopen(V_MESSAGE);
--v_FileHandle := V_MESSAGE;
loop
BEGIN
utl_file.get_line(v_FileHandle, charString);
exception
when no_data_found then
utl_file.fclose(v_FileHandle);
exit;
END;
dbms_output.put_line(charString);
if finalStr is not null then
finalStr := finalStr || charString;
else
finalStr := charString;
end if;
end loop;
-- for inserting the XML data into the table
rowsp := xmlgen.insertXML('ONE.TableA',finalStr);
dbms_output.put_line('INSERT DONE '||TO_CHAR(rowsp));
xmlgen.resetOptions;
end;Please Help
Edited by: 846857 on Jul 18, 2011 10:55 PMwith t as (select xmltype('<TableA >
<mappings Record="3">
<MessageId>1</MessageId>
<Message> This bundle is available at your address!</Message>
</mappings>
<mappings Record="3">
<MessageId>2</MessageId>
<Message>This isn’t available at your address. </Message>
</mappings>
</TableA >') col FROM dual)
--End Of sample data creation with subquery factoring.
--You can use the query from here with your table and column name.
select EXTRACTVALUE(X1.column_value,'/mappings/MessageId') MESSAGEID
,EXTRACTVALUE(X1.column_value,'/mappings/Message') MESSAGE
from t,table(XMLSEQUENCE(extract(t.COL,'/TableA/mappings'))) X1;Above Code works as i get result
MESSAGEID MESSAGE
1 This bundle is available at your address!
2 This isn’t available at your address.
_____________________________________________ now I want to insert the result into Table A... How to proceed... Please help
Edited by: 846857 on Jul 19, 2011 12:15 AM -
Insert XML String into XML file at a certain position
Hello,
I have this xml string:
<jdbc-driver-params>
<url>jdbc:oracle:thin:@localhost:1521:mydb</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<property>
<name>user</name>
<value>myuser</value>
</property>
</properties>
<password-encrypted>myuser</password-encrypted>
</jdbc-driver-params>and i need to insert it into an xml file at a certain position (as child for a node)
The xml file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:sec="http://www.bea.com/ns/weblogic/90/security"
xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
<name>myDB</name>
<jdbc-data-source-params>
<global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
</jdbc-data-source-params>
</jdbc-data-source>And this is how I would like to get it in the end:
<?xml version='1.0' encoding='UTF-8'?>
<jdbc-data-source xmlns="http://www.bea.com/ns/weblogic/90" xmlns:sec="http://www.bea.com/ns/weblogic/90/security" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90/security/wls" xsi:schemaLocation="http://www.bea.com/ns/weblogic/920 http://www.bea.com/ns/weblogic/920.xsd">
<name>mydb</name>
<jdbc-driver-params>
<url>jdbc:oracle:thin:@localhost:1521:myDB</url>
<driver-name>oracle.jdbc.OracleDriver</driver-name>
<properties>
<property>
<name>user</name>
<value>myuser</value>
</property>
</properties>
<password-encrypted>myuser</password-encrypted>
</jdbc-driver-params>
<jdbc-connection-pool-params>
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
</jdbc-connection-pool-params>
<jdbc-data-source-params>
<global-transactions-protocol>OnePhaseCommit</global-transactions-protocol>
</jdbc-data-source-params>
</jdbc-data-source>So, I obtain the node for the given xml string, the jdbc-data-source node from the xml file and i attempt the appendChild. The problem is that nothing really gets inserted into the xml file.
Someone, any idea?
My code:
try
DOMParser parser = new DOMParser();
parser.parse(xmlFileName);
Document doc = parser.getDocument(); // the document we will insert node into
Node root = doc.getElementsByTagName("jdbc-data-source").item(0);
//get XML string node
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(xmlString));
Document doc4XMLString = db.parse(inStream);
Node rootXMLString = doc4XMLString.getElementsByTagName("jdbc-driver-params").item(0);
root.appendChild(doc.importNode(rootXMLString, true));
return true;
catch (Exception e)
e.printStackTrace();
}Thanks,
johnny
Edited by: smeag0l on Aug 6, 2008 5:08 PM
Edited by: smeag0l on Aug 6, 2008 5:43 PMWell, you helped me again :-) Thank you very much!
Here is how the code should look:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder db4XMLFile = factory.newDocumentBuilder();
Document doc4XMLFile = db4XMLFile.parse(xmlFileName);
Node root4XMLFile = doc4XMLFile.getElementsByTagName(rootNodeName).item(0);
DocumentBuilder db4XMLString = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(xmlString));
Document doc4XMLString = db4XMLString.parse(inStream);
Node root4XMLString = doc4XMLString.getElementsByTagName(xmlStringNodeName).item(0);
root4XMLFile.appendChild(doc4XMLFile.importNode(root4XMLString, true));
File file = new File(xmlFileName);
Result result = new StreamResult(file.toURI().getPath());
Source source = new DOMSource(doc4XMLFile);
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result); -
Parsing an xml string into id-value pair format
Hi,
I am new in oracle BPEL.
My requirement is that I need to parse an xml string containing tag name and coressponding value into an 'id -value' pair.
For example-
The input xml format is -
<employee>
<empid>12345</empid>
<name>xyz</name>
<city>London</city>
</employee>
The required xml format is-
<employee>
<item id="empid" value="12345"/>
<item id="name" value="xyz"/>
<item id="city" value="London"/>
</employee>
Please let me know if there is a work-around for this.
ThanksSomething like this (have not tested):
<xsl:for-each select="//employee">
<employee>
<xsl:for-each select="./*">
<item>
<xsl:attribute name="id">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="text()"/>
</xsl:attribute>
</item>
</xsl:for-each>
</employee>
</xsl:for-each> -
XML: How to convert xml string into Node/Document
I have a string in xml form.
<name>
<first/>
<second/>
</name>
I want to convert this string into DOM Node or Document.
How can I do this?
Any help or pointer?
TIA
SachinTry this :
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new org.xml.sax.InputSource(new StringReader(strXml)));Hope this helps. -
Help: How to parse XML string into Node Context
Hi Experts,
I am trying to work with a web dynpro for java application which calls a Web Service. I can call the web service successfully, however I have a problem on interpreting the response result into table. The response result is in (XML) string format, like this:
I followed this , but it resulted to an error:
com.sap.engine.lib.xml.parser.NestedSAXParserException: Fatal Error: com.sap.engine.lib.xml.parser.ParserException: Name expected: 0x20(:main:, row:158, col:59)(:main:, row=158, col=59) -> com.sap.engine.lib.xml.parser.ParserException: Name expected: 0x20(:main:, row:158, col:59)
do anyone of you had a similar experience and were able to resolve it, please post it here. it will be highly appreciated. thanks in advance.Try this :
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new org.xml.sax.InputSource(new StringReader(strXml)));Hope this helps. -
Does anyone can help me to import XML string into a ORACLE database
Hi guys!
i have some problem that my friend wants me to convert XML string to Oracle relational database which means.
let's say, there is a table that a row has XML string.
so table has XML string with varchar type.
what my friend want me to do is, the string needs to be solved as a relational database.
like
A table has 'ID', 'data', 'result' rows
and Data column has XML string like <?xml version...............>
then wants to convert that data column's XML data into TABLE B with structure normally XML has.
i'm so confused and have no idea at all.. also i couldn't find any solution related to my stuff..
if someone knows how to solve the problem, just let us know
thxThe database is 10.2.0
What sort of example do u want me to give you..
i thought i give all information on the post..
i will explain it
let's say there are 3 columns ID,Name,Code
Id = normal integer
Name= varchar
Code= varchar
and i need to conver that XML in the Code column into relational databases
the code column has normal XML code which is starting from <?xml version.... and so on
so does it explain?
please help me!
Maybe you are looking for
-
my i pad1, suddenly not charge up from wall socket , just from my pc .any suggestions . thanks
-
The above error occurs when I place unique constraint on a column in a custom list. This error only occurs because the custom list has been configured to only allow creaters to view and edit their own list items. I just can't see why that should prev
-
Help me solve stolen iPhone mystery
I need some clarification on how the Continuity feature works in order to solve who took my iPhone 5c. The last time I know for sure I had my phone was in location A where there are 3 people who could have taken it. I then went to location B where I
-
Viewing movies at normal size in Photos
Despite my previous comment about drag-&-drop galleries, I'm liking Photos. One thing, however, bugs the everloving poo out of me. I've got galleries with photos and movies, which I think is great. Problem is, they're not HD movie files. They're old
-
LAG with Dock Application List
Hello, I located a problem with mac book pro retina, and someone élement LAG when we wish to scroll a list. I speak in particular about the list of application in the finder (Mode Lists) and what we wish to make the applications scroll. To meet you a