简体   繁体   中英

Cognos parse xml - cognos side or sql side?

I have a view that pulls 3 columns from an audit table:

Col1        Col2     Col3
(String)    (Long)   (String)

Inside the long the long(Col2) I have XML:

<AuditDetail AuditType="TrackableItem">
    <Attributes>
        <Attribute DataType="class java.lang.Long" Name="Lockid"
            NewValue="11" OldValue="12"/>
        <Attribute DataType="class java.lang.String" Name="OverrideCode"
            NewValue="8899" OldValue="9998"/>
    </Attributes>
</AuditDetail>

I need my cognos side to display 4 columns (Col1 Col2 Col3 Col4) , two columns will be columns that the view already returns, the other two need to be values selected from the xml (AuditDetail/Attributes/Attribute/newvalue)

How would I select the two data items from these xml files? would I parse somehow on the cognos side, or is there anyway to get the data values in the view?

Using oracle db.

Since it's stored as a string, it really isn't going to make much difference. You're going to use the same kind of string functions (instr, substr, etc) in Cognos or the view. And it will be a huge pain. Doing it in a view would only force you to do it once, at least. Here's an example to help you get started:

SQLFiddle

 select substr (col1 ,(instr(col1,'NewValue="')+10) -- This gets you to the end of the NewValue=" string ,(instr(col1,'NewValue="')+10) - instr(col1,'=',(instr(col1,'NewValue="'))) --This gets you the length, the second value is the first occurence of '"' AFTER your start position ) from AuditData 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM