Jason Jodon
Usenet Archive
- Joined
- Oct 14, 2003
- Messages
- 3
- Reaction score
- 0
I'm need to get the value of the Credential domain from the XML below. I am really new to XML and would appreciate any help. I am able to pull the other element values but the attribute vaulue eludes me. I guess I don't understand slice very well. Please help!!!!
XML sample:
<cXML xml:lang="en-US" timestamp="2003-12-11T04:28:06-08:00" payloadID="">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>AN01000002779-T</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
My code:
<script language=JScript RUNAT=Server>
function elementValue(xml, elem)
{
var begidx;
var endidx;
var retStr;
begidx = xml.indexOf(elem);
if (begidx > 0) {
endidx = xml.indexOf('</',begidx);
if (endidx > 0)
retStr = xml.slice(begidx+elem.length,
endidx);
return retStr;
}
return null;
}
function DomainValue(xml, elem)
{
var begidx;
var endidx;
var retStr;
begidx = xml.indexOf(elem);
if (begidx > 0) {
endidx = xml.indexOf('</',begidx);
if (endidx > 0)
retStr = xml.slice(begidx+elem.length,
endidx);
return retStr;
}
return null;
}
</script>
<%
REM this will take the PunchOutSetup request coming from Ariba Network REM take the ORMSURL and buyercookie attach it to the startpage URL and REM and send the response back to the ORMS. REM punchoutredirect.asp?bc=21343hfefe&url="http://ariba.cisco/com/..&redirect=" Dim ret Dim punch Dim statusText Dim statusCode Dim cookie Dim url Dim xmlstr Dim fromDomain Dim fromUser Dim toDomain Dim toUser cookie = "" url = "" xmlstr = "" dir = "" path = Request.ServerVariables("PATH_INFO") dir = Left(path, InstrRev(path, "/")) if IsEmpty(dir) then dir = "/" end if
REM This command reads the incoming HTTP cXML Request
xml = Request.BinaryRead(Request.TotalBytes)
for i = 1 to Request.TotalBytes
xmlstr = xmlstr + String(1,AscB(MidB(xml, i,
1)))
REM
REM SUPPLIER SHOULD INSERT XML PARSER METHOD CALL HERE
REM
Next
cookie = elementValue(xmlstr, "<BuyerCookie>")
url = elementValue(xmlstr, "<URL>")
fromDomain = DomainValue(xmlstr, "<Identity>")
fromUser = elementValue(xmlstr, "<Identity>")
newXMLStr = Right(xmlstr, Len(xmlstr) -
(InStr(xmlstr,"<Identity>") + Len("<Identity>")))
toDomain = DomainValue(newXMLstr, "<Identity>")
toUser = elementValue(newXMLStr, "<Identity>")%>
<%
REM This following formats the cXML PunchOutSetupReponse if IsEmpty(cookie) then %> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cXML SYSTEM "cXML.dtd"> <cXML version="1.0" payloadID="<%= Now &"@"& Request.ServerVariables("LOCAL_ADDR")%>" timestamp="<%= Now %>"> <Response> <Status code="500" text="Invalid document"/> </Response> </cXML> <% else %> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cXML SYSTEM "cXML.dtd"> <cXML version="1.0" payloadID="<%= Now &"@"& Request.ServerVariables("LOCAL_ADDR")%>" timestamp="<%= Now %>"> <Response> <Status code="200" text="OK"/> <PunchOutSetupResponse> <StartPage> <URL>https://punchout.stateindustrial.com/<%= dir%>/selection.asp?bc=<%= cookie%>&url=<%= url%>&fromDom=<%= FromDomain%>&from=<%= fromUser%>&toDom=<%= ToDomain%>&to=<%= toUser%>&redirect=<%= StartPage%></URL> </StartPage> </PunchOutSetupResponse> </Response> </cXML> <%end if%>
XML sample:
<cXML xml:lang="en-US" timestamp="2003-12-11T04:28:06-08:00" payloadID="">
<Header>
<From>
<Credential domain="NetworkID">
<Identity>AN01000002779-T</Identity>
</Credential>
</From>
<To>
<Credential domain="DUNS">
My code:
<script language=JScript RUNAT=Server>
function elementValue(xml, elem)
{
var begidx;
var endidx;
var retStr;
begidx = xml.indexOf(elem);
if (begidx > 0) {
endidx = xml.indexOf('</',begidx);
if (endidx > 0)
retStr = xml.slice(begidx+elem.length,
endidx);
return retStr;
}
return null;
}
function DomainValue(xml, elem)
{
var begidx;
var endidx;
var retStr;
begidx = xml.indexOf(elem);
if (begidx > 0) {
endidx = xml.indexOf('</',begidx);
if (endidx > 0)
retStr = xml.slice(begidx+elem.length,
endidx);
return retStr;
}
return null;
}
</script>
<%
REM this will take the PunchOutSetup request coming from Ariba Network REM take the ORMSURL and buyercookie attach it to the startpage URL and REM and send the response back to the ORMS. REM punchoutredirect.asp?bc=21343hfefe&url="http://ariba.cisco/com/..&redirect=" Dim ret Dim punch Dim statusText Dim statusCode Dim cookie Dim url Dim xmlstr Dim fromDomain Dim fromUser Dim toDomain Dim toUser cookie = "" url = "" xmlstr = "" dir = "" path = Request.ServerVariables("PATH_INFO") dir = Left(path, InstrRev(path, "/")) if IsEmpty(dir) then dir = "/" end if
REM This command reads the incoming HTTP cXML Request
xml = Request.BinaryRead(Request.TotalBytes)
for i = 1 to Request.TotalBytes
xmlstr = xmlstr + String(1,AscB(MidB(xml, i,
1)))
REM
REM SUPPLIER SHOULD INSERT XML PARSER METHOD CALL HERE
REM
Next
cookie = elementValue(xmlstr, "<BuyerCookie>")
url = elementValue(xmlstr, "<URL>")
fromDomain = DomainValue(xmlstr, "<Identity>")
fromUser = elementValue(xmlstr, "<Identity>")
newXMLStr = Right(xmlstr, Len(xmlstr) -
(InStr(xmlstr,"<Identity>") + Len("<Identity>")))
toDomain = DomainValue(newXMLstr, "<Identity>")
toUser = elementValue(newXMLStr, "<Identity>")%>
<%
REM This following formats the cXML PunchOutSetupReponse if IsEmpty(cookie) then %> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cXML SYSTEM "cXML.dtd"> <cXML version="1.0" payloadID="<%= Now &"@"& Request.ServerVariables("LOCAL_ADDR")%>" timestamp="<%= Now %>"> <Response> <Status code="500" text="Invalid document"/> </Response> </cXML> <% else %> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE cXML SYSTEM "cXML.dtd"> <cXML version="1.0" payloadID="<%= Now &"@"& Request.ServerVariables("LOCAL_ADDR")%>" timestamp="<%= Now %>"> <Response> <Status code="200" text="OK"/> <PunchOutSetupResponse> <StartPage> <URL>https://punchout.stateindustrial.com/<%= dir%>/selection.asp?bc=<%= cookie%>&url=<%= url%>&fromDom=<%= FromDomain%>&from=<%= fromUser%>&toDom=<%= ToDomain%>&to=<%= toUser%>&redirect=<%= StartPage%></URL> </StartPage> </PunchOutSetupResponse> </Response> </cXML> <%end if%>