PageMethods are a part of the ASP.NET AJAX Framework (ScriptManager).
By default, ASP.NET AJAX uses JSON as opposed to SOAP.
This is by design, mainly because the ASP.NET AJAX Javascript library it optimized to work with JSON objects.
You can override this default by specifying the [ResponseFormat] attribute on the web method.
Like this:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public XmlElement GetFoo(string url)
{
Here is a decent article on PageMethods and ASP.NET AJAX-enabled web services.