【发布时间】:2019-01-29 15:20:09
【问题描述】:
我有一小部分从名为 tridion 的 cms 导出的 xml,我想使用 php 解析这些信息。
我尝试使用DOMDocument 和DOMXPath 访问数据,但未能检索到所需信息。
例如,当我尝试从示例数据中访问节点 title 时,我没有得到任何结果。
$xmlDoc = new DOMDocument();
$xmlDoc->load($xmlFilePath);
$xpath = new DOMXPath($xmlDoc);
$xpath->registerNamespace('tcm', 'http://www.tridion.com/ContentManager/5.0');
$xpath->registerNamespace('xmlns', 'http://www.w3.org/1999/xlink');
$result = $xpath->query('title');
我认为这是一个命名空间问题,但我真的不明白如何处理它。
这是导出文件的样子(为了便于阅读,有些缩短):
<PackageItem xmlns:tcm="http://www.tridion.com/ContentManager/5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.sdltridion.com/ContentManager/ImportExport/Package/2013">
<PrimaryBlueprintParentUrl>/webdav/Content%20%28en%29/Content/120_external%20Links/Services/EL_www%2some-domin%2Ecom.xml</PrimaryBlueprintParentUrl>
<Data>
<tcm:Data>
<tcm:Title>EL_www.some-domain.com</tcm:Title>
<tcm:Type>Normal</tcm:Type>
<tcm:Schema xlink:type="simple" xlink:title="External Link (EL)" xlink:href="/webdav/Content/System/Schemas/Common/External%20Link%20%28EL%29.xsd" IsMandatory="false" />
<tcm:Content>
<externallink xmlns="uuid:D612E2C9-CD2E-4CD8-9FAE-3826311343A8">
<title>www.some-domain.com</title>
<url xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.some-domain.com" />
</externallink>
</tcm:Content>
</tcm:Data>
</Data>
</PackageItem>
【问题讨论】:
-
您是否尝试过使用 simplexml_load_string。这会将 xml 转换为对象
-
复制完整的错误信息也很有帮助
-
没有错误信息,我的 xpath 查询根本没有返回任何东西。
-
我也尝试过使用
simplexml_load_string(),但这个函数似乎无法处理 xml 命名空间。