Monday, December 6, 2010

Ajax call of WFS

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WFS Ajax Post </title>
<script type="text/javascript">

var reqXML;

function LoadXMLDoc(url){

if (window.XMLHttpRequest){
reqXML = new XMLHttpRequest();
}
else if(window.ActiveXObject){
reqXML = new ActiveXObject("Microsoft.XMLHTTP");
}

if(reqXML){
document.getElementById("spanOut").innerHTML = "Sending Information...";
reqXML.open("POST", url, true);
reqXML.onreadystatechange = BuildXMLResults;
reqXML.setRequestHeader("Content-Type", "application/xml");
//var strName = encodeURI(document.Form1.txtName.value);
//var strMess = encodeURI(document.Form1.txtMess.value);
var strMess = document.Form1.txtMess.value;

var xmlBody = strMess ;

reqXML.send( xmlBody);

}
else{
alert("Your browser does not support Ajax");
}

}

function BuildXMLResults(){
if(reqXML.readyState == 4){
if(reqXML.status == 200){

var strText = reqXML.responseText;
var regex1 = /</g;
var regex2 = />/g;
strText = strText.replace( regex1, "&lt;");
strText = strText.replace( regex2, "&gt;");
//alert(strText);
document.getElementById("spanOut").innerHTML = strText;

}
else{

alert("There was a problem retrieving the XML data:\n" + reqXML.statusText);

}
}
}
</script>
</HEAD>
<body>
<h1>Get Feature using Ajax Post</h1>
<form id="Form1" name="Form1" method="post" onsubmit="LoadXMLDoc('http://webservices.ionicsoft.com/unData/wfs/UN'); return false;">

<textarea name="txtMess" rows="15" cols="80">
<wfs:GetFeature service="WFS" version="1.0.0"
outputFormat="GML2"
xmlns:topp="http://www.openplans.org/topp"
xmlns:wfs="http://www.opengis.net/wfs"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:gml="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:unwfs="http://www.ionicsoft.com/wfs"
xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd">
<wfs:Query typeName="unwfs:AIR_POINT">
</wfs:Query>
</wfs:GetFeature>


</textarea><br>
<input type="submit" name="btnSubmit" value="Submit"><br/>
<span id="spanOut"></span>
</form>
</body>
</HTML>

Tuesday, October 5, 2010

Importing XMLNodes, Serialization


using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

namespace ModifydummyNameS
{
public class MakeSavedummyNameRequest
{
internal System.Xml.XmlDocument getdummyNameReq(string getdummyNameOut, string savedummyNameTemplate)
{
XmlDocument getdummyNameDoc = new XmlDocument();
getdummyNameDoc.Load(getdummyNameOut);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(getdummyNameDoc.NameTable);




nsmgr.AddNamespace("ns5", "http://dummyName3/Statistics/dummyName5/dummyName4/1");

XmlElement root = getdummyNameDoc.DocumentElement;

XmlNodeList dummyNameNodes = root.SelectNodes("//ns5:dummyName4", nsmgr);

XmlDocument savedummyNameDocOut = new XmlDocument();


XmlDocument savedummyNameDoc = new XmlDocument();
savedummyNameDoc.Load(@"C:\Data\SmallTests\ModifydummyNameS\SavedummyNameTemplate.xml");
XmlNamespaceManager saveNmgr = new XmlNamespaceManager(savedummyNameDoc.NameTable);
saveNmgr.AddNamespace("m", "http://www.dummyName3/Statistics/dummyName5/dummyName2Service/1");

XmlNode outAppendNode = savedummyNameDocOut.ImportNode(savedummyNameDoc.DocumentElement, true);
XmlNode nextNodeInsert = savedummyNameDocOut.AppendChild(outAppendNode);
foreach (XmlNode dummyNameNode in dummyNameNodes)
{
savedummyNameDoc = new XmlDocument();
savedummyNameDoc.Load(@"C:\Data\SmallTests\ModifydummyNameS\SavedummyNameTemplate.xml");
XmlNode callsNode = savedummyNameDoc.SelectSingleNode("/calls", saveNmgr);
XmlNode callNode = savedummyNameDoc.SelectSingleNode("//call", saveNmgr);
XmlNode insertPointNode = savedummyNameDoc.SelectSingleNode("//m:SavedummyName4Request", saveNmgr);
dummyName2Service.dummyName4 dummyName = deserializedummyNameOut(dummyNameNode);
if (dummyName.dummyName6 == null)
{
dummyName.dummyName6 = "SAS" + dummyName.id.id + "~" + dummyName.id.version;
XmlDocument dummyNameDoc = new XmlDocument();
dummyNameDoc.LoadXml(serializedummyNameToString(dummyName));

XmlNode appendNode = savedummyNameDoc.ImportNode(dummyNameDoc.DocumentElement,true);
insertPointNode.AppendChild(appendNode);
XmlNode outNode = savedummyNameDocOut.ImportNode(callNode, true);

nextNodeInsert.AppendChild(outNode);


}
}

return savedummyNameDocOut;
}

private void serializedummyNameToFile(dummyName2Service.dummyName4 dummyName)
{
XmlSerializer ser = new XmlSerializer(typeof(dummyName2Service.dummyName4), "http://www.dummyName3/Statistics/dummyName5/dummyName4/1");
TextWriter tw = new StreamWriter(@"C:\Data\SmallTests\ModifydummyNameS\dummyNameser.xml");
ser.Serialize(tw,dummyName);
tw.Close();


}
private string serializedummyNameToString(dummyName2Service.dummyName4 dummyName)
{
XmlSerializer ser = new XmlSerializer(typeof(dummyName2Service.dummyName4), "http://www.dummyName3/Statistics/dummyName5/dummyName4/1");
StringWriter sw = new StringWriter();

ser.Serialize(sw, dummyName);
return sw.ToString();


}


private dummyName2Service.dummyName4 deserializedummyNameOut(XmlNode dummyNameNode)
{
XmlSerializer ser = new XmlSerializer(typeof(dummyName2Service.dummyName4), "http://www.dummyName3/Statistics/dummyName5/dummyName4/1");
return (dummyName2Service.dummyName4)ser.Deserialize(new XmlNodeReader(dummyNameNode));
}
}
}

Wednesday, February 24, 2010

URLs

http://msdn.microsoft.com/en-us/library/ms950779.aspx Namespaces and xpath

Tuesday, February 2, 2010

Traverse an XML Document Produce a namespacemanager


using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace xpath
{
class XmlTraverser
{
private XmlDocument doc;
private XmlNamespaceManager nmgr;
public XmlNamespaceManager getXmlNamespaceManager(){
return nmgr;
}
public XmlTraverser(XmlDocument doc)
{
this.doc = doc;
XmlNode node = doc.DocumentElement;
nmgr = new XmlNamespaceManager(doc.NameTable);


traverseDocument(node, "", nmgr);
ShowAllNamespaces(nmgr);


}

private void traverseDocument(XmlNode node, string path, XmlNamespaceManager nmgr)
{
path += "/" + node.Name;


if (node.HasChildNodes)
{
foreach (XmlAttribute att in node.Attributes)
{

if (att.Name.StartsWith("xmlns"))
{
string[] splitString = att.Name.Split(new Char[] { ':' });
nmgr.AddNamespace(splitString[1], att.InnerText);


}
Console.WriteLine(att.Name + " == " + att.InnerText);
}


foreach (XmlNode childNode in node.ChildNodes)
{
if (!childNode.HasChildNodes)
{




Console.WriteLine(path + " = "+childNode.InnerText);
}
traverseDocument(childNode, path, nmgr);
}
}

}
private void ShowAllNamespaces(XmlNamespaceManager nsmgr)
{
do
{
Console.WriteLine("popedScope");
foreach (String prefix in nsmgr)
{
Console.WriteLine("Prefix={0}, Namespace={1}", prefix, nsmgr.LookupNamespace(prefix));
}
}
while (nsmgr.PopScope());
}

}
}
Usage
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\Data\adrian\adrian.xml");
XmlTraverser xmlTraverser = new XmlTraverser(doc);
XmlNamespaceManager mgr = xmlTraverser.getXmlNamespaceManager();
XmlNodeList nodes = doc.SelectNodes("/ns5:dataItemInstance[ns6:id/ns6:id=16100 and ns6:id/ns6:version=1]/ns5:relatedDIT/ns7:id/text()", mgr);
foreach (XmlNode node in nodes)
{
Console.WriteLine("Got here");
Console.WriteLine(node.InnerText);
}
Console.Read();

}

Thursday, January 21, 2010

Raw Signed Soap Call


using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Web.Services2.Security.X509;
using Microsoft.Web.Services2;
using Microsoft.Web.Services2.Security.Tokens;
using Microsoft.Web.Services2.Security;
using System.Xml.Serialization;

namespace MDTestTool.Tests
{
class RawSoapTest : Microsoft.Web.Services2.Messaging.SoapClient
{
public RawSoapTest() { }
public RawSoapTest(string url) :base(new Uri(url))
{


}

public string getRawSoapResponseText( string soapText, string method)
{
try
{


this.Timeout = -1;
SoapEnvelope envelope = new SoapEnvelope();
envelope.LoadXml(soapText);


X509CertificateStore store = X509CertificateStore.CurrentUserStore(X509CertificateStore.MyStore);
bool open = store.OpenRead();
X509CertificateCollection col = store.Certificates;
bool found = false;
foreach (X509Certificate cert in col)
{
if (!found && cert.SupportsDigitalSignature && cert.IsCurrent )
{
SignMessage(envelope.Context, cert, 30000);



found = true;
}

}
if (!found) throw new Exception("No suitable Certificate Found");
SoapEnvelope resp = this.SendRequestResponse(method, envelope);
return resp.OuterXml;
}
catch (Exception ex)
{
return ex.Message;
}
}

private void SignMessage(SoapContext requestContext, X509Certificate certificate,int timestampTimeout){



X509SecurityToken stSecurityToken = new X509SecurityToken(certificate);

if (stSecurityToken != null){

MessageSignature sig = new MessageSignature(stSecurityToken);

requestContext.Security.Tokens.Add(stSecurityToken);
requestContext.Security.Elements.Add(sig);


requestContext.Security.Timestamp.TtlInSeconds = timestampTimeout;



}


}





}
}