我想从 xml 获取架构元素列表。例如
<xs:schema id="SPPOnlineXML" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="SPPOnlineXML" msdata:IsDataSet="true" msdata:MainDataTable="lev_settings" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="lev_settings">
<xs:complexType>
<xs:sequence>
<xs:element name="LEVID" type="xs:int" minOccurs="0" />
<xs:element name="ATTHEADID" type="xs:int" minOccurs="0" />
<xs:element name="MINDATETYPE" type="xs:unsignedByte" minOccurs="0" />
<xs:element name="MINMONTH" type="xs:unsignedByte" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
根据上面的模式,我想创建一个元素数组“LEVID”,“ATTHEAD”,“MINDATETYPE”,“MINMONTH”
最佳答案
要以数组形式获取所有xs:元素名称属性值
,我建议您选择 SimpleXML 并使用 xpath。一旦您获得了字符串(或文件)中的 XML,如果您知道 xpath 表达式,那么就非常简单了:
# Obtain all element names incl. complexTypes:
//xs:element/@name
# Obtain all element names excl. complexTypes and those
# which contain anything incl. comments, text etc.:
//xs:element[not(node())]/@name
每个 PHP 代码示例如下:
$xml = simplexml_load_string($string);
echo "Obtain all element names incl. complexTypes:\n";
$elementNames = array_map('strval', $xml->xpath('//xs:element/@name'));
print_r($elementNames);
echo "\nObtain all element names excl. complexTypes and those
which contain anything incl. comments, text etc.:\n";
$elementNames = array_map('strval', $xml->xpath('//xs:element[not(node())]/@name'));
print_r($elementNames);
关于php - 如何在 PHP 中从 XMLSchema XML 文件读取元素名称数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16098414/