我经常得到具有非法字符的 XML 文件,例如&、<、>、"和'。因此,我无法使用simple_xml和DOM读取它们,也无法根据下面的XSD验证用户的XML文件以在 PHP 中进行进一步处理。
有没有办法解决这个问题?
我正在从远程主机读取 XML 文件,因此它可以在 10KB 和 10MB 之间。
提前致谢
注意:我只在下面放了无效的 XML 元素,因为某些原因整个 XML 文件在这里显示为纯文本。
XML
<url>http://www.amazon.co.uk/gp/product/B005MG8O96/ref=olp_product_details?ie=UTF8&me=&seller=</url>
<description>iPhone 4. The "fastest", <b>highest-resolution</b> iPhone.</description>
XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:element name="store">
<xs:complexType>
<xs:sequence>
<xs:element name="item" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="title_type" />
<xs:element name="description" type="description_type" />
<xs:element name="price" type="xs:decimal" />
<xs:element name="url" type="url_type" />
<xs:element name="images">
<xs:complexType>
<xs:sequence>
<xs:element name="image" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="url" type="url_type" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="id_type" />
<xs:attribute name="available" type="available_type" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="id_type" />
<xs:attribute name="date" type="xs:date" />
<xs:attribute name="time" type="xs:time" />
</xs:complexType>
</xs:element>
<xs:simpleType name="title_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="description_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="255" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="url_type">
<xs:restriction base="xs:anyURI">
<xs:minLength value="10" />
<xs:maxLength value="2000" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="id_type">
<xs:restriction base="xs:string">
<xs:minLength value="1" />
<xs:maxLength value="100" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="available_type">
<xs:restriction base="xs:string">
<xs:enumeration value="Yes" />
<xs:enumeration value="No" />
</xs:restriction>
</xs:simpleType>