首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simplexml使用内联命名空间解析XML

Simplexml使用内联命名空间解析XML
EN

Stack Overflow用户
提问于 2012-10-23 18:18:03
回答 1查看 825关注 0票数 2

如何解析如下所示的文档?

代码语言:javascript
复制
<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly'>
       <s:AttributeType name='StMovement' rs:number='1' rs:nullable='true' rs:writeunknown='true'>
        <s:datatype dt:type='number' rs:dbtype='numeric' dt:maxLength='19' rs:scale='0' rs:precision='28' rs:fixedlength='true'/>
    </s:AttributeType>
    </s:ElementType>
</s:Schema>

<rs:data>
<z:row StMovement='21123'/>
</rs:data>

我知道有类似.children(<schemaurl>)的东西,但只有在某个URL处有xsd时才有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-23 23:04:29

请参阅the ->children() method的文档。为了以这种方式使用,名称空间标识符不必指向XSD,您只需要知道要传入的URI字符串。

您还可以将该方法的第二个参数设置为true,并对名称空间使用本地别名/前缀,这在理论上不太可靠,但在实践中通常很好。

在您的示例中(如果您添加了上面示例中缺少的</xml> ),以下两种方法都可以正常工作:

代码语言:javascript
复制
echo (string)$sx->children('uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882')->Schema->attributes()->id;
echo (string)$sx->children('s', true)->Schema->attributes()->id;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13028266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档