如何使用 php 在 XML 文件中进行搜索?

2024-03-08

不知道有没有办法在xml文件中搜索。例如。我想要得到Value使用Name from AttrList产品代码。是否可以 ?这就是我的 xml 的样子:

<Product>
    <ProductCode>70-14UF44-00</ProductCode>
    <Vendor>NBM</Vendor>
    <ProductType>Soft. Unsorted application</ProductType>
    <ProductCategory>Software</ProductCategory>
    <ProductDescription>{Bluetooth Driver IVT V.1.4.9.3, 1pk, Full Package, OEM, 1pk for 12M3W/15G3WS, 1pk, 1pk}</ProductDescription>
    <Image>https://www.it4profit.com/catalogimg/wic/1/70-14UF44-00</Image>
    <ProductCard>https://content.it4profit.com/itshop/itemcard_cs.jsp?ITEM=50409104050320315&amp;THEME=asbis&amp;LANG=ro</ProductCard>
    <AttrList>
      <element Name="Tipul licentei" Value="Full Package"/>
      <element Name="License Conditions" Value="OEM"/>
      <element Name="Produs de baza(1)" Value="12M3W/15G3WS"/>
      <element Name="Greutatea bruta a pachetului" Value="1.546 kg"/>
      <element Name="Bucati in pachet" Value="1"/>
    </AttrList>
    <MarketingInfo>
      <element></element>
    </MarketingInfo>
    <Images/>
  </Product>

我正在使用简单XML图书馆来自PHP尝试使用 DOMDocument:

$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->Load('produse_catalog.xml');
$xpath = new DOMXPath($doc);
$query = '//ProductCatalog/Product/ProductCode[. = "PMP5297C_QUAD"]';

$entries = $xpath->query($query);
foreach ($entries as $entry) {
    echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
    " by {$entry->previousSibling->nodeValue}\n";
}

结果是:注意:尝试获取非对象的属性。我究竟做错了什么 ?


是的,在这种情况下,您可以将 simplexml 与 xpath 一起使用:

$xml = simplexml_load_file('path/to/xml/file.xml');
$name = 'Tipul licentei';
$product_code = '70-14UF44-00';
$products = $xml->xpath("//Product/ProductCode[contains(text(), '$product_code')]/following-sibling::AttrList/element[@Name='$name']");
if(count($products) > 0) { // if found

    $value = (string) $products[0]->attributes()->Value;
    echo $value; // Full Package

}

样本输出 http://codepad.viper-7.com/FIHtFF

也可以使用 DOMDocument:

$dom = new DOMDocument();
$dom->load('path/to/xml/file.xml');
$xpath = new DOMXpath($dom);

$name = 'Tipul licentei';
$product_code = '70-14UF44-00';
$value = $xpath->evaluate("string(//Product/ProductCode[contains(text(), '$product_code')]/following-sibling::AttrList/element[@Name='$name']/@Value)");
echo $value; // Full Package
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 php 在 XML 文件中进行搜索? 的相关文章

随机推荐

  • JavaScript 中的“如果调试”?

    JavaScript 或 Visual Studio 中是否有任何内容可以检测代码是否在调试模式下使用 类似于 C 中的 if DEBUG 但对于 JavaScript 来说 有点晚了 但我也需要同样的东西 并且在找到可行的解决方案之前不能
  • 使 Android 应用程序不适用于平板电脑

    我正在 Play 商店中发布我的应用程序 但我不希望它适用于平板电脑 我怎样才能实现它 我不想手动排除 Android 开发者控制台中的每一个平板电脑 但我确实需要我的应用程序专门在智能手机上运行 编辑 我按照你的建议做了 但结果是这样的
  • 如何通过单元测试来测试资源控制器

    我有以下标准的反应管理结构设置 一切都按预期工作 资源从端点获取数据GET LIST and GET ONE我的问题是我想测试CandidateView组件 我不知道如何向它传递一些模拟数据以检查渲染时它将包含所有预期的数据
  • 奇怪的行为:列表理解中的 Lambda [重复]

    这个问题在这里已经有答案了 在Python 2 6中 x for x in lambda m for m in 1 2 3 结果是 3 3 3 我期望输出为 1 2 3 即使使用非列表理解方法 我也会遇到完全相同的问题 即使在我将 m 复制
  • Quercus (Java) 比原生 PHP 更快吗?

    如果是这样 为什么 或者也许更好的问题是 何时 我发现了一些零散的评论 例如这个帖子 https stackoverflow com questions 777356 is quercus a viable replacement for
  • Karma、PhantomJS 和 es6 Promise

    我正在编写一个使用新的 es6 Promise 的 JavaScript 库 我可以在 Firefox 中测试该库 因为 Promise 已定义 但是 当我尝试使用 Karma 和 PhantomJS 测试我的代码时 出现错误Can t f
  • 错误问题:“访问路径 被拒绝。”

    我一直在寻找解决该错误的技巧 google stackoverflow com 等 但一切都不起作用 我需要通过 asp net 应用程序动态创建 aspx 文件 我为尝试修复它所做的事情 1 在文件夹的 属性 gt 安全性 中 我添加了
  • HTML5 视频自动播放,但有 5 秒延迟

    我的网页上有一个 20 秒长的 HTML5 视频循环作为背景 并将其设置为自动启动 视频自动播放可以延迟5秒吗 我试图在尝试播放之前让视频完全加载 以防止视频卡顿 这是我当前的代码
  • 对象方法调用不带括号

    导入后是否可以调用不带括号的对象方法 这是我的测试代码 基于本文 http www artima com scalazine articles package objects html马丁 奥德斯基 package gardening fr
  • 实体框架:获取不直接相关的对象

    我正在为我的 NET 应用程序使用实体框架 我也能够返回对象及其直接相关的对象 非常方便 但我在获取这些对象的对象时遇到问题 IEnumerable
  • 在 wpf 中运行视频

    我希望我的第一个项目以视频的形式实现 我该怎么做 我想播放视频 然后当我单击表单时 视频停止并且应用程序转到另一个页面 请帮我 尝试使用 MediaElement
  • Windows 8 - 自定义动态磁贴

    我们正在使用 C 开发适用于 Windows 8 的应用程序 我们的应用程序涉及用户创建的绘图 我们希望将他们的绘图合并到活动磁贴中 我找到了将文本和图片设置为应用程序的动态磁贴的示例 有没有办法做自定义的事情来渲染线条等 或者是通过将 P
  • Formvalidation.io - 无法读取 null 的属性“classList”

    使用 formvalidation io 时 我的控制台总是出现错误 我不知道这个错误的原因是什么 即使我使用后端验证 URL 我仍然会在某些网站上收到垃圾邮件 我正在使用隐形 ReCaptcha https formvalidation
  • 元素结束标记中的属性?

    执行以下操作是否被视为有效 li stuff li li stuff li li stuff 或者做属性have出现在开始标签中 不 不是 您必须在开始标记中使用属性 Running a test in w3c 验证器 http valid
  • 将 springboot 升级到 2.4.4 后,response.sendError(statusCode, "error message") 不起作用

    我在用AuthenticationEntryPoint处理身份验证问题 将异常原因传递给最终用户 response sendError responseCode errorReason 我最近将 Spring Boot 从 2 2 11 R
  • 类似 Javascript ||在 PHP 中 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 In javascript 我可以使用 例如这样的语句 window foo window foo 如果没有的话window foo它将被分配给
  • C++方法声明问题

    我在 Image cpp 中有一些代码 Image Image int width int height int depth m sFileName 0 and in Image h class Image public DrawAble
  • 调试使用 pm2 运行的应用程序

    应用程序由以下人员运行 pm2 start app js or pm2 start config json 我想使用 node inspector 在本地调试我的应用程序 我添加了debug争论 pm2 start node args de
  • UIBarButtonItem 图像应该有多大?

    我正在创建自己的自定义 按日期排序 和 按数字排序 按钮 我计划将它们作为右侧按钮放置在导航栏中 我的图像应该有多大才能适当地填充空间 UIBarItem https developer apple com documentation ui
  • 如何使用 php 在 XML 文件中进行搜索?

    不知道有没有办法在xml文件中搜索 例如 我想要得到Value使用Name from AttrList和产品代码 是否可以 这就是我的 xml 的样子