Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么simpleXML不能将这个xml转换成可用的东西?_Php_Simplexml - Fatal编程技术网

Php 为什么simpleXML不能将这个xml转换成可用的东西?

Php 为什么simpleXML不能将这个xml转换成可用的东西?,php,simplexml,Php,Simplexml,我正在尝试使用PHP中的Web服务。我无法控制Web服务的输出。它给了我看起来很好的XML,但simpleXML只返回一个空对象给我。下面是从Web服务返回的XML <?xml version="1.0" encoding="utf-8"?> <DataSet xmlns="http://Service"> <xs:schema id="WorkOrders" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema

我正在尝试使用PHP中的Web服务。我无法控制Web服务的输出。它给了我看起来很好的XML,但simpleXML只返回一个空对象给我。下面是从Web服务返回的XML

<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://Service">
  <xs:schema id="WorkOrders" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xs:element name="WorkOrders" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
      <xs:complexType>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="WorkOrder">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="WorkOrder_x0023_" type="xs:string" minOccurs="0" />
                <xs:element name="DateEntered" type="xs:string" minOccurs="0" />
                <xs:element name="DateCompleted" type="xs:string" minOccurs="0" />
                <xs:element name="DateChanged" type="xs:string" minOccurs="0" />
                <xs:element name="Status" type="xs:string" minOccurs="0" />
                <xs:element name="Type" type="xs:string" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:complexType>
    </xs:element>
  </xs:schema>
  <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
    <WorkOrders xmlns="">
      <WorkOrder diffgr:id="WorkOrder1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
        <WorkOrder_x0023_>7164724</WorkOrder_x0023_>
        <DateEntered>07/19/11</DateEntered>
        <DateCompleted>07/21/11</DateCompleted>
        <DateChanged>07/21/11</DateChanged>
        <Status>CP</Status>
        <Type>IN</Type>
      </WorkOrder>
    </WorkOrders>
  </diffgr:diffgram>
</DataSet>

我知道我在这里遗漏了什么,但我就是摸不着。有什么想法吗?

在访问带名称空间的子项和属性(如diffgram)时,需要指定名称空间(以及工作订单的id)。尝试:

(这些子元素回到默认命名空间中)


参考资料:

谢谢。我真的被这件事弄糊涂了。
(object) SimpleXMLElement Object
(
)
var_dump($xml->children('urn:schemas-microsoft-com:xml-diffgram-v1')->children());