php - 在 PHP 中获取 XML 模式值
问题描述
我是 XML 新手,今天我被困了将近一个星期。
据我了解,我有一个包含架构和 xml 元素的 XML 文件。我正在尝试获取架构中定义的值并使用它们,我也想知道如何加入 xml 元素,就像我在 mysql 或 sql 中所说的那样, join table a with table b where a.id=b.a_id
但在这种情况下使用 xml 元素。
这是我的结构:
和 Product 对象如下:
`<xs:element name="ProductImage">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductBaseCode" default="">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="15" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ImageName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="IsDefaultImage" type="xs:boolean" />
<xs:element name="ImageWidth" type="xs:int" />
<xs:element name="ImageHeight" type="xs:int" />
<xs:element name="ImageUrl">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<Product>
<Name>Pad Printing</Name>
<Description>Pad Printing</Description>
<Price>0.8</Price>
<Flags>1</Flags>
<BaseItemCode>PA</BaseItemCode>
<Id>1b9d8241-61c8-47cd-baf5-d9258cbc4734</Id>
<ColourName/>
</Product>
`
我需要使用in 获取相关产品的in ImageURL
ProductImageBaseItemCode
ProductBaseCode
ProductImage
解决方案
如果您想读取 XML 中的数据,可以使用 simplexml_load_string。
你可以这样做:
$xml = "<xs:element name="ProductImage">
<xs:complexType>
<xs:sequence>
<xs:element name="ProductBaseCode" default="">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="15" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ImageName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="IsDefaultImage" type="xs:boolean" />
<xs:element name="ImageWidth" type="xs:int" />
<xs:element name="ImageHeight" type="xs:int" />
<xs:element name="ImageUrl">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<Product>
<Name>Pad Printing</Name>
<Description>Pad Printing</Description>
<Price>0.8</Price>
<Flags>1</Flags>
<BaseItemCode>PA</BaseItemCode>
<Id>1b9d8241-61c8-47cd-baf5-d9258cbc4734</Id>
<ColourName/>
</Product>"
$xmlData = simplexml_load_string($xml);
$imageurl = $xmldata['xs:element']['xs:element'][5]['@attributes']['name'];
所以基本上你把 XML 变成一个对象,然后去对象中你想要一些数据的地方。
如果你不确定你的对象结构是怎样的,你总是可以打印对象。
推荐阅读
- c# - Regedit 表达式特殊字符
- ssh - ssh 公钥指纹不匹配。中间人攻击?
- sql - 如何从特定时间范围查询更改跟踪
- gmail - 如何向我的 300 多个用户大量添加 Gmail API 权限?
- powershell - 通过 TFS Release Build Definition 在 Build Server 上运行 Windows 应用程序
- visual-studio-code - 如何通过 FTP 将 VS Code 与远程工作区连接?
- c++ - 实现接口时对已删除函数的 unique_ptr 引用
- python - 使用自定义异常而不需要导入它们
- python - Flask-WTF validate() 方法不应该覆盖其他验证吗?
- sql-server - SQLServer 错误:10054,通信链路故障