如何用命名空间解析出 XML 文件?
How parsing out XML file with namespaces?
我知道以前曾 post 提出过类似的问题,但我无法解析这个带有命名空间的 XML 文件。
这是它的 link,因为它太大了 post:https://tsdrapi.uspto.gov/ts/cd/casestatus/sn86553893/info.xml
我试过使用 simplexml_load_file
,但这并没有创建 xml 对象。然后我发现了类似的问题并尝试这样的事情,前提是我已经下载了名为 86553893.xml
的文件
这是我的 php 代码:
$xml= new SimpleXMLElement("86553893.xml");
foreach($xml->xpath('//com:ApplicationNumber') as $event) {
var_export($event->xpath('com:ApplicationNumberText'));
}
您需要将第 3 个参数传递为 true
:
<?php
$xml= new SimpleXMLElement("info.xml", NULL, true);
foreach($xml->xpath('//com:ApplicationNumber') as $event) {
var_export($event->xpath('com:ApplicationNumberText'));
}
输出:
array (
0 =>
SimpleXMLElement::__set_state(array(
)),
)
您可以阅读更多关于 SimpleXMLElement
的信息:
您必须在每个要使用的元素上注册名称空间:
$xml= new SimpleXMLElement("86553893.xml");
$xml->registerXpathNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1');
foreach ($xml->xpath('//com:ApplicationNumber') as $event) {
$event->registerXpathNamespace(
'com', 'http://www.wipo.int/standards/XMLSchema/Common/1'
);
var_export($event->xpath('com:ApplicationNumberText'));
}
这在 DOM 中有所不同,您使用 DOMXPath 实例,因此它只是一个对象,您只需注册一次命名空间。
$dom = new DOMDocument();
$dom->load("86553893.xml");
$xpath = new DOMXpath($dom);
$xpath->registerNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1');
foreach ($xpath->evaluate('//com:ApplicationNumber') as $event) {
var_export($xpath->evaluate('string(com:ApplicationNumberText)', $event));
}
我知道以前曾 post 提出过类似的问题,但我无法解析这个带有命名空间的 XML 文件。
这是它的 link,因为它太大了 post:https://tsdrapi.uspto.gov/ts/cd/casestatus/sn86553893/info.xml
我试过使用 simplexml_load_file
,但这并没有创建 xml 对象。然后我发现了类似的问题并尝试这样的事情,前提是我已经下载了名为 86553893.xml
这是我的 php 代码:
$xml= new SimpleXMLElement("86553893.xml");
foreach($xml->xpath('//com:ApplicationNumber') as $event) {
var_export($event->xpath('com:ApplicationNumberText'));
}
您需要将第 3 个参数传递为 true
:
<?php
$xml= new SimpleXMLElement("info.xml", NULL, true);
foreach($xml->xpath('//com:ApplicationNumber') as $event) {
var_export($event->xpath('com:ApplicationNumberText'));
}
输出:
array (
0 =>
SimpleXMLElement::__set_state(array(
)),
)
您可以阅读更多关于 SimpleXMLElement
的信息:
您必须在每个要使用的元素上注册名称空间:
$xml= new SimpleXMLElement("86553893.xml");
$xml->registerXpathNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1');
foreach ($xml->xpath('//com:ApplicationNumber') as $event) {
$event->registerXpathNamespace(
'com', 'http://www.wipo.int/standards/XMLSchema/Common/1'
);
var_export($event->xpath('com:ApplicationNumberText'));
}
这在 DOM 中有所不同,您使用 DOMXPath 实例,因此它只是一个对象,您只需注册一次命名空间。
$dom = new DOMDocument();
$dom->load("86553893.xml");
$xpath = new DOMXpath($dom);
$xpath->registerNamespace('com', 'http://www.wipo.int/standards/XMLSchema/Common/1');
foreach ($xpath->evaluate('//com:ApplicationNumber') as $event) {
var_export($xpath->evaluate('string(com:ApplicationNumberText)', $event));
}