Tag Archive | "xml"

Tags: , , ,

Scripting OBIEE with UDML/XML (XUDML Automation?)


After my recent post on the Content Accelerator Framework and preparing for my deeper dive into the tool, I have begun looking at the inner workings of how to automate the tool for daily or weekly maintenance tasks.  This effort got me looking at some possible linkages between CAF and some existing OBIEE executables, nqXUDMLGen.exe and nqXUDMLExec.exe that reside in the ORACLEBI_HOME\Server\bin\ directory.

Andreas from Trivadis has done a spectacular job detailing the usage of XUDML in OBIEE, here.  I have also mirrored it here.

I should be posting my additional CAF findings this month.

Trivadis also has some other cool docs on BI which I have mirrored below:

Posted in CAF, ETL, PotpourriComments (3)

Tags: , , ,

JavaScript - Find the Text Between Two Words


Using basic JavaScript and Regular Expressions I was looking for a way to parse any text string and capture only a segment of text within that string.  This is really a scenario of parsing. 

Logically to do what I needed one must know in advance what the preceeding and subsequent text or symbols of the desired text segment will be.  Typically this already pre-determined so that part was easy.  Once, I had that, I wrote a function using the “match” method of a JavaScript string variable to bump against the reg ex and poof the match method splits out an matching results into an indexed array.  I only want the first match so I call upon it to get my answers.

Here is the code, just wrap it in a <script> tag when you are ready to rock in roll.

var myText = "< ?xml version='1.0' encoding='utf-8'?><callbackstatusmsg xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns='http://tempuri.org/'><returnmsg>$j('#statusContainer').slideDown('slow');$j('#statusType').removeClass('error').addClass('good');$j('#statusMessage').html('Saved Successfully.');cancelMainFormOperation();</returnmsg>
<returnaction>approve sign up</returnaction><returncode>0</returncode>
<isdatacomplete>false</isdatacomplete>
</callbackstatusmsg>";

function parseReturnedXML(strToParse, strStart, strFinish)
{
alert("start test");

var str = strToParse.match(strStart + "(.*?)" + strFinish);

if (str != null) {
alert("Parsed Item: " + str[1]);
}
else
alert("The string result returned null for the matching.\nReturn blank, null, or the strToParse var if you want.");

alert("end test");
}

And here is the function call below. Just place it in the body of your HTML in another <script> tag or below the actual function in the main HEAD section script tag.

parseReturnedXML(myText, "<returnmsg>", "</returnmsg>");

 

Super Cool Note

I am absolutely no stranger to JavaScript but I finally paid attention to something that some of you may or may not already know. When you declare a variable in JS using the var declaration you variable then becomes an object (ex: var str;). At which point you the ability to hold other object variable data such as the array that stems from another object. In the example of above “strToParse” becomes an object var as it is passed as an argument into the function. It is inherently an object by being an argument. However, if we did not declare the variable “str” using “var” (which is allowed) we would get an error when trying to evaluate the match method call from strToParse. Try it yourself. Remove the var declaration and run your script to view the result. You can also use your favorite IDE that has intellisense to view the methods an object has when declared with var and when it has not been declared using var.

 

Conclusion

In the example above I used a hard-code XML string of data inside the function, but did leave a parameter, strToParse, so that the text we want to parse can be passed in the function call.  XML for the string to parse is not necessary, I just wanted to show that this Reg Ex usage works not just for alphanumeric characters but also symbols, etc.  Manimuplate the code anyway you see fit to work with your applications.

Posted in JavaScriptComments (1)