使用simple-xml时,有没有办法让它忽略它无法识别的节点?
答案 0 :(得分:4)
是。如果使用@Root(strict=false)
注释您的类,它将忽略任何未映射的元素。有关其他详细信息,请参阅文档:
http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#loosemap
在相关说明中,您还可以使用@Element(required=false)
处理可选元素。
http://simple.sourceforge.net/download/stream/doc/tutorial/tutorial.php#optional
答案 1 :(得分:0)
Discliamer:如果simple-xml意味着除了simple XML之外的任何东西,那么以下答案是无关紧要的
首先,请看:http://www.w3.org/TR/xmlschema-1/#element-any
允许此类元素的示例模式是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Root">
<xs:complexType>
<xs:all>
<xs:element name="Element">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
验证上述内容的示例xml是:
<?xml version="1.0" encoding="UTF-8"?>
<Root xsi:noNamespaceSchemaLocation="Any.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Element>
<Root>
<Element><Node1><SubElement/></Node1><Node2/></Element>
</Root>
</Element>
</Root>