Можем ли мы настроить simple-xml, чтобы он игнорировал неизвестные узлы - PullRequest
4 голосов
/ 09 марта 2011

При использовании simple-xml, есть ли способ позволить ему игнорировать узлы, которые он не распознает?

Ответы [ 2 ]

4 голосов
/ 13 августа 2013

Да.Если вы аннотируете свой класс с помощью @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

0 голосов
/ 09 марта 2011

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>
...