PHP中的XML拉模式解析
</element>"; if (!isset($HTTP_RAW_POST_DATA)) { fault(22, "Please make sure always_populate_raw_post_data = On in php.ini"); } else { // set up the request $request = $HTTP_RAW_POST_DATA; error_reporting(E_ERROR | E_WARNING | E_PARSE); // create the reader $reader = new XMLReader(); $reader->setRelaxNGSchema("request.rng"); $reader->XML($request); $input = ""; while ($reader->read()) { if ($reader->name == "double" && $reader->nodeType == XMLReader::ELEMENT) { while ($reader->read()) { if ($reader->nodeType == XMLReader::TEXT || $reader->nodeType == XMLReader::CDATA || $reader->nodeType == XMLReader::WHITESPACE || $reader->nodeType == XMLReader::SIGNIFICANT_WHITESPACE) { $input .= $reader->value; } else if ($reader->nodeType == XMLReader::END_ELEMENT && $reader->name == "double") { break; } } break; } } if (isset($php_errormsg) ) fault(21, $php_errormsg); else if (! $reader->isValid()) fault(19, "Invalid request"); else if ($input < 0) fault(20, "Cannot take square root of negative number"); else respond($input); $reader->close(); } function respond($input) { ?> <methodResponse> <params> <param> <value><double><?php echo sqrt($input); ?></double></value> </param> </params> </methodResponse> <?php } function fault($code, $message) { echo "<?xml version=''1.0''?> <methodResponse> <fault> <value> <struct> <member> <name>faultCode</name> <value><int>" . $code . "</int></value> </member> <member> <name>faultString</name> <value> <string>" . $message . "</string> </value> </member> </struct> </value> </fault> </methodResponse>"; } 属性 在正常的推解析期间不会看到属性。若要读取属性,请停止在元素的起点处,通过名称或编号来请求特定属性。 将需要的属性名称传递到 getAttribute(),以便在当前元素上查找该属性的值。例如,下面的语句请求当前元素的 id 属性:
如果属性位于名称空间中 —— 例如,xlink:href —— 则调用 getAttributeNS(),将本地名称和名称空间 URI 分别作为第一个和第二个参数进行传递。(前缀是无关紧要的。)例如,下面的语句将请求 http://www.w3.org/1999/xlink/ 名称空间中 xlink:href 属性的值:
如果属性不存在,那么这两种方法都将返回 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |