gpt4 book ai didi

php - 添加 xmlns :xsi attribute namespace to root element 时出错

转载 作者:行者123 更新时间:2023-12-04 05:57:55 25 4
gpt4 key购买 nike

我有一个名为 sample.xml 的 xml

<?xml version="1.0"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

和 sample.xsd 来验证 sample.xml
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">

<xs:element name="note">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

我正在尝试通过我的 php 代码验证 sample.xml,因为在 sample.xml 中没有命名空间,所以我从 php 代码中添加了命名空间。
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');

$file = 'sample.xml';
$schema = 'sample.xsd';
$doc = new DOMDocument();
$doc->load($file);

$doc->createAttributeNS('http://www.w3schools.com', 'xmlns');
$doc->createAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xmlns:xsi');
$doc->createAttributeNS('http://www.w3schools.com sample.xsd', 'xsi:schemaLocation');

print $doc->saveXML();


if ($doc->schemaValidate($schema)) {
print "$file is valid.\n";
} else {
print "$file is invalid.\n";
}
?>

当我运行代码时,出现以下错误

Fatal error: Uncaught exception 'DOMException' with message 'Namespace Error' in /var/www/xsd/test_sample.php:20 Stack trace: #0 /var/www/xsd/test_sample.php(20): DOMDocument->createAttributeNS('http://www.w3.o...', 'xmlns:xsi') #1 {main} thrown in /var/www/xsd/test_sample.php on line 20



如果我注释掉 $doc->createAttributeNS('http://www.w3.org/2001/XMLSchema-instance', 'xmlns:xsi');代码运行良好,但我无法像它所说的那样验证 xml sample.xml is invalid
有人可以帮我处理这段代码吗?

最佳答案

我要解决的第一件事是也使用 appendChild在您的 document element .否则,该属性将被创建但不会附加到您的树中。

如需验证,请查看 this link .

关于php - 添加 xmlns :xsi attribute namespace to root element 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9288874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com