Parsing a single string
I apologize if the question is trivial, but I have been working on it for a while.
I would like to send a single string containing one XML element to the parser. I can't figure out a way to do it.
Of course, I can easily parse files, but for communication purposes, I need a way to parse just single elements, that are stored in separate strings, and find out their contents.
Thank you,
Sol
Can't your parser accept a Reader as input? Check its API documentation to find that out. If it can, then "whatever.parse(new StringReader(yourXmlString))" is what you want.
Similar Messages
-
Hi:
I am DOM parser and i want to parse only single node. That is,
String xmlRecords = "<name>Anup</name>";
Here i want to parse name node.
So can any body help me in that?
Edited by: user11688398 on Jul 22, 2011 1:12 AMRam wrote:
Peter Lawrey wrote:
Using String manipulation is likely to be faster than using a DOM (assuming you had valid XML) however if performance were an issue you would use JDBC to access the database.What will happen, if OP has large number of nodes in the string? Will String manipulation be the faster one? String manipulation will be faster only if the string has one or two nodes. Otherwise it will be complicated.Direct String manipulation will always be faster. This is because you can make assumptions a full DOM will not make (as it needs to be able to read any type of XML document)
For this reason its best avoided unless you really need the speed as any subtle change in the XML could break a simplified parser.
Peter Lawrey wrote:
Make sure you have proper XML (not just a fragment) and use a document parser as EJP suggests.EJP didn't suggest anything, rather he did changed the conversation in wrong direction.I have been reading too many posts which look the same. Sabre not EJP made a suggestion. ;) -
Is there a way in Oracle to return multiple rows as a single string?
Hi gurus,
I just got help from your guys fixing my dynamic sql problem. What I am doing in that function is to return a single string from multiple rows and I use it in the select statement. It works fine once the problem was solved. But is there any way in Oracle to do this in the select statement only? I have a table that stores incidents (incident_id is the PK) and another table that stores the people that are involved in an incident.
Incident_table
(incident_id number PK);
Incident_people_table
(incident_id number PK/FK,
person_id number PK);
Now in a report, I need to return the multiple rows of the Incident_People_table as a single string separated by a comma, for example, 'Ben, John, Mark'. I asked the SQL Server DBA about this and he told me he can do that in SQL Server by using a variable in the sql statement and SQL Server will auomatically iterate the rows and concatenate the result (I have not seen his actual work). Is there a similar way in Oracle? I have seen some examples here for some similar requests using the sys_connect_by_path, but I wonder if it is feasible in a report sql that is already rather complex. Or should I just stick to my simpler funcion?
Thanks.
BenHi,
May be, this example will help you.
SQL> CREATE TABLE Incident_Table(
2 incident_id number
3 );
Table created.
SQL> CREATE TABLE Person_Table(
2 person_id number,
3 person_name VARCHAR2(200)
4 );
Table created.
SQL> CREATE TABLE Incident_People_Table(
2 incident_id number,
3 person_id number
4 );
Table created.
SQL> SELECT * FROM Incident_Table;
INCIDENT_ID
1
2
SQL> SELECT * FROM Person_Table;
PERSON_ID PERSON_NAME
1 John
2 Mark
3 Ben
4 Sam
SQL> SELECT * FROM Incident_People_Table;
INCIDENT_ID PERSON_ID
1 1
1 2
1 3
2 1
2 2
2 4
6 rows selected.
SQL> SELECT IT.*,
2 (
3 WITH People_Order AS (
4 SELECT IPT.incident_id, person_id, PT.person_name,
5 ROW_NUMBER() OVER (PARTITION BY IPT.incident_id ORDER BY PT.person_name) AS Order_Num,
6 COUNT(*) OVER (PARTITION BY IPT.incident_id) AS incident_people_cnt
7 FROM Incident_People_Table IPT
8 JOIN Person_Table PT USING(person_id)
9 )
10 SELECT SUBSTR(SYS_CONNECT_BY_PATH(PO.person_name, ', '), 3) AS incident_people_list
11 FROM (SELECT * FROM People_Order PO WHERE PO.incident_id = IT.incident_id) PO
12 WHERE PO.incident_people_cnt = LEVEL
13 START WITH PO.Order_Num = 1
14 CONNECT BY PRIOR PO.Order_Num = PO.Order_Num - 1
15 ) AS incident_people_list
16 FROM Incident_Table IT
17 ;
INCIDENT_ID INCIDENT_PEOPLE_LIST
1 Ben, John, Mark
2 John, Mark, SamRegards,
Dima -
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> -
How would I get the Oracle XML Parser to parse an XML string?
The example ("DOMSample") only demonstrates how to parse an XML
file -- I would like to do something of the form...
parser.parse("<test>testing</test>");
On a related note, whilst the PL/SQL utilities are helpful, I
would like to see more in the way of documentation and examples
for the Parser itself, showing more examples of DOM API calls and
perhaps a complete worked example (including a DTD).
Keep up the good work!
Many thanks,
Ian Brettell,
Indus International.
nullIan Brettell (guest) wrote:
: How would I get the Oracle XML Parser to parse an XML string?
: The example ("DOMSample") only demonstrates how to parse an XML
: file -- I would like to do something of the form...
: parser.parse("<test>testing</test>");
With the latest version, 1.0.0.1, now available, you can use the
InputStream and InputSource methods. Please see the doc for
details.
: On a related note, whilst the PL/SQL utilities are helpful, I
: would like to see more in the way of documentation and examples
: for the Parser itself, showing more examples of DOM API calls
and
: perhaps a complete worked example (including a DTD).
: Keep up the good work!
: Many thanks,
: Ian Brettell,
: Indus International.
Thanks for the input. I will pass it onto the documentation team.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
null -
Xerces - Parse XML from String
I am trying to parse an xml string using Xerces.
I have the following code:
String xml = <segments meters="8643" seconds="538" distance="5.4 mi" time="8 mins"><segment id="seg0" pointIndex="0" meters="122" seconds="11" distance="0.1 mi" time="11 secs">Head <b>southwest</b> from <b>B Ave NE</b>
</segment>
<segment id="seg1" pointIndex="2" meters="239" seconds="22" distance="0.1 mi" time="21 secs">Turn <b>left</b> at <b>19th St NE</b></segment>
<segment id="seg2" pointIndex="5" meters="2985" seconds="192" distance="1.9 mi" time="3 mins">Turn <b>right</b> at <b>1st Ave NE</b></segment>
<segment id="seg3" pointIndex="43" meters="3280" seconds="211" distance="2.0 mi" time="3 mins">Continue on <b>1st Ave SW/1st Ave NW</b></segment>
<segment id="seg4" pointIndex="96" meters="158" seconds="10" distance="0.1 mi" time="10 secs">Bear <b>right</b> at <b>US-151-BR S</b></segment>
<segment id="seg5" pointIndex="102" meters="1859" seconds="93" distance="1.2 mi" time="1 min">Turn <b>right</b> at <b>16th Ave SW</b></segment>;
XMLReader reader = new SAXParser();
reader.setContentHandler(new Handler());
reader.parse(xml);I am getting the followoing error:
org.xml.sax.SAXParseException: File "<segments meters="8643" seconds="538" distance="5.4 mi" time="8 mins"><segment id="seg0" pointIndex="0" meters="122" seconds="11" distance="0.1 mi" time="11 secs">Head <b>southwest</b> from <b>B Ave NE</b></segment><segment id="seg1" pointIndex="2" meters="239" seconds="22" distance="0.1 mi" time="21 secs">Turn <b>left</b> at <b>19th St NE</b></segment><segment id="seg2" pointIndex="5" meters="2985" seconds="192" distance="1.9 mi" time="3 mins">Turn <b>right</b> at <b>1st Ave NE</b></segment><segment id="seg3" pointIndex="43" meters="3280" seconds="211" distance="2.0 mi" time="3 mins">Continue on <b>1st Ave SW/1st Ave NW</b></segment><segment id="seg4" pointIndex="96" meters="158" seconds="10" distance="0.1 mi" time="10 secs">Bear <b>right</b> at <b>US-151-BR S</b></segment><segment id="seg5" pointIndex="102" meters="1859" seconds="93" distance="1.2 mi" time="1 min">Turn <b>right</b> at <b>16th Ave SW</b></segment></segments>" not found.
at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1219)
at org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:501)
at org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:314)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1097)
at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1139)
at com.shiftyeyes.xmlTest.main(xmlTest.java:34)
Exception in thread "main" anyone know how I can fix this? Thanks!!reader.parse(new InputSource(new StringReader(xml)));
-
SaxParser error parsing xml encoded string
I'm trying to parse an XML string with Java's SaxParser. The program
fails at the end of an element or at the beginning of a new element.
Is my XML string okay?
<?xml version="1.0" encoding="utf-8"
?><DTYPE>OVL</DTYPE><DTYPE>IMG</DTYPE>. . .
If fails after </DTYPE> and before the next <DTYPE>
The Sax Parser works fine on files.
Here is the code I use to send the string to the parser :
// Parse the input
SAXParser saxParser = factory.newSAXParser();
InputStream is = new ByteArrayInputStream(stringToParse.getBytes());
saxParser.parse( is, handler );
Here is the error message I get :
org.xml.sax.SAXParseException: Inadmissible sign at the document end<
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3376)
at org.apache.crimson.parser.Parser2.fatal(Parser2.java:3370)
at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:673)
at org.apache.crimson.parser.Parser2.parse(Parser2.java:337)
at
org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:143)
at EchoSaxParser.parse(EchoSaxParser.java:51)
at StringParser.parse(StringParser.java:23)
at Servant.stringparse(Servant.java:30)
at TEST._TestImplBase._invoke(_TestImplBase.java:43)
at
com.sun.corba.se.internal.corba.ServerDelegate.dispatch(ServerDelegate.java�:353)
at com.sun.corba.se.internal.iiop.ORB.process(ORB.java:280)
at
com.sun.corba.se.internal.iiop.RequestProcessor.process(RequestProcessor.ja�va:81)
at
com.sun.corba.se.internal.orbutil.ThreadPool$PooledThread.run(ThreadPool.ja�va:106)
Any help would be greatly appreciated!
Thank you!<?xml version="1.0" encoding="utf-8" ?><DTYPE>IMG</DTYPE><DTYPE>REF</DTYPE>Above is a short XML string that causes the problem.
It's all one line.
I also tried adding System.getProperty("line.separator") add the
end of each tag so I get :
<?xml version="1.0" encoding="utf-8" ?>
<DTYPE>IMG</DTYPE>
<DTYPE>REF</DTYPE>But same error. It still crashes after the first <DTYPE></DTYPE> tag.
Any help greatly appreciated! -
How can I parse an XML string, (not an XML file)?
Hi,
I am using Xerces2 Java Parser 2.4.0,
I wanta parse an XML string, not an XML file, but
in the Parser class there is only following methods:
parse(InputSource source)
parse(java.lang.String systemId)
thankshi
InputSource is = new InputSource(new ByteArrayInputStream(xmlSrc.getBytes()));
HTH
vasanth-ct -
I need some help to parse an XML String instead of an XML file. The string can be like.
String myRecords =
"<data>"+
" <employee>"+
" <name>John</name>"+
" <Designation>Manager</Designation>"+
" </employee>"+
" <employee>"+
" <name>Sara</name>"+
" <Designation>Clerk</Designation>"+
" </employee>"+
"<data>"+I tried it in a servlet, it and it worked. The entire code is long. But here it is most of it:
assuming that x is a string and has the xml of
<?xml version="1.0" ?>
- <company>
- <employee>
<firstname>Tom</firstname>
<lastname>Cat</lastname>
</employee>
- <employee>
<firstname>Paul</firstname>
<lastname>Enderson</lastname>
</employee>
- <employee>
<firstname>George</firstname>
<lastname>Jungle</lastname>
</employee>
</company>
=========================
try {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder db = factory.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(*x*));
Document doc = db.parse(inStream);
doc.getDocumentElement().normalize();
out.println("Root element " + doc.getDocumentElement().getNodeName() + "<BR>");
NodeList nodeLst = doc.getElementsByTagName("employee");
out.println("Information of all employees<BR>");
for (int s = 0; s < nodeLst.getLength(); s++) {
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
out.println("First Name : " + ((Node) fstNm.item(0)).getNodeValue() + "<BR>");
NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname");
Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
NodeList lstNm = lstNmElmnt.getChildNodes();
out.println("Last Name : " + ((Node) lstNm.item(0)).getNodeValue() + "<BR>");
} catch (Exception e) {
System.out.println(e);
out.close();
==============
The output is
Root element company
Information of all employees
First Name : Tom
Last Name : Cat
First Name : Paul
Last Name : Enderson
First Name : George
Last Name : Jungle -
Problem in parsing a xml string using dom parser
i want to parse a Xml String using a Dom parser......the parse function in dom parser takes only input stream as argument.......so i made the code as
InputStream inputstream = new StringBufferInputStream(XmlData) ;
InputSource inputSource = new InputSource(inputstream );
but saxexception is coming and also warning called
"java.io.StringBufferInputStream in java.io has been deprecated"
please help me.........i want to parse a Xml String using a Dom
parser......the parse function in dom parser takes
only input stream as argument.......This is not true of the DOM parser in Java 1.4. So you might want to get rid of your old parser and replace it by something more current. Or perhaps you are using 1.4 and you just didn't read all of the API docs. -
How to Parse XML into String in BPEL?
Hi,
Can anyone tell me, how can I parse XML into String?
I am taking input from File Adapter, File adapter is reading that XML.
Then in assign activity i am using XPath expression(built functions) using XMLParser(),doTranslateToNative() etc.. many functions I have tried but XML is not getting parsed into String Variable.
Please help me asap.
Thanks
ShikhaThanks a lot Eric.
I am trying this, oraext:get-content-as-string('receiveInput_Read_InputVariable','body','/ns3:orders')
but getting this error
<bpelFault><faultType>0</faultType><subLanguageExecutionFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>XPath expression failed to execute. An error occurs while processing the XPath expression; the expression is oraext:get-content-as-string('receiveInput_Read_InputVariable','body','/ns3:orders'). The XPath expression failed to execute; the reason was: internal xpath error. Check the detailed root cause described in the exception message text and verify that the XPath query is correct. </summary></part><part name="code"><code>XPathExecutionError</code></part></subLanguageExecutionFault></bpelFault> -
Concate mutiple input in to Single String.
Hi ,
I need one help .
I want to contcat the one of the IDOC fields occurance in a single string. Please let me know how to user.
For Ex. I am mapping one field of Idoc ex TDLINE --> Extrinsic (0.. Unbounded)in the output side.
In the Input side the TDLINE fields appears multiple time. in the current mapping I have one to one mapping between TDLINE and Extrinsic fields. So it creates the same number of Extrinsic fields as I have TDLINE fields at input side.
What I want to do , I want to create a single Extrinisc fields at output side for all the TDLINE fields.
For Ex. At particaular segment I have 10 fields for TDLine then all should come as Single string at out put side.
Note . No of Occurance of TD line is 0.. unbounded).
Please give ur suggestions for the same.Hi Ram,
i got same problem recently. For this problem there is no standard functions in XI so you must create udf. I wrote that udf and sending with these:
http://allyoucanupload.webshots.com/v/2003800853095440083
http://allyoucanupload.webshots.com/v/2003854577844519372
http://allyoucanupload.webshots.com/v/2003865357113273227
http://allyoucanupload.webshots.com/v/2003828767547920796
Regards,
Sai -
I have writen simple fuction which have one parameter of String type. In this parameter i am sending an XML string. Is there anyone who knows how to parse this XML-String ?
Thanks.parse(new StringReader(theString));
-
Convert the IDOC XML file into single string?
Hello All,
I have a scenario, where i need to conver the IDOC XML into single string, to send it to target.
Please let me know how can we achive this, I dont know java coding.
Please help me out to write the java code.
Thanks and Regards,
ChinnaHi Chinna,
You can do this in two ways -
1. Java mapping
https://wiki.sdn.sap.com/wiki/display/XI/JavaMapping-ConverttheInputxmlto+String
https://wiki.sdn.sap.com/wiki/display/Snippets/JavaMapping-ConverttheInputxmltoString
2. XSLT mapping
/people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping
Regards,
Sunil Chandra -
Single string tag expanded into 100 plc register values
I found a way to read 100 registers of plc data with a single string tag, if you can guarantee that none of the plc registers are zero. A register value of zero acts like a Null ascii terminator and truncates the string. Define the string tag as 200 bytes and uncheck the text data only box. Use the code in the attached picture to convert the string bytes back into decimal register values.
Attachments:
string tag to 100 U16 values.gif 2 KBIns't that code exactly the same as typecasting to an U16 Array?
Message Edited by altenbach on 05-19-2005 07:24 AM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
CastingU16.gif 3 KB
Maybe you are looking for
-
Dados de Imposto Retido na Fonte _ IR no Faturamento
PessoALL, Estou criando uma venda de serviço com retenção de IR no momento do faturamento, os calculos estão sendo feitos corretamente, a contabilização também. Quando crio o documento contábil e vou na FB03 para verificar o botão "Dados de imposto r
-
Objects (lines) and text boxes are not able to be made bigger or smaller
first of all: For no reason at all, all of my text boxes are now set up as threaded text. I dont know how that turned on. When i go to "type" and try to select "threaded text" it wont allow me to select it - it is not highlighted. So I have no clu
-
Problem JMS-c api for message Acknowledgement
Hi, I am working in a project that uses bea-JMS C api for Communictions.In my project i am using topic messaging for message reciving and sending..Here i am using durablesubscriber for receiving and client Acknowledgement to Ackno
-
TS2537 Mac OS X v10.7.3 latest version. Can't use Mail
I'm having the same problem with Mail but with the latest Lion version (OS X v.10.7.3). Can't quit Mail, can't read messages, can't shut down. I just moved to an Apple computer with the hope to live in the "promise land" of no more crashes. Never hap
-
MP4 video file-too big to email
I have a MP4 file that is 72.4 MB. It is too big to send it via email. How do I do it? Thxs