我有一个主题问题的解决方案,但它是一个黑客,我想知道是否有更好的方法来做到这一点.
下面是一个示例XML文件和一个PHP CLI脚本,它执行作为参数给出的xpath查询.对于此测试用例,命令行是:
./xpeg "//MainType[@ID=123]"
Run Code Online (Sandbox Code Playgroud)
最奇怪的是这条线,没有它我的方法不起作用:
$result->loadXML($result->saveXML($result));
Run Code Online (Sandbox Code Playgroud)
据我所知,这只是重新解析修改后的XML,在我看来这不应该是必要的.
有没有更好的方法在PHP中对此XML执行xpath查询?
XML(注意默认命名空间的绑定):
<?xml version="1.0" encoding="utf-8"?>
<MyRoot
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/data http://www.example.com/data/MyRoot.xsd"
xmlns="http://www.example.com/data">
<MainType ID="192" comment="Bob's site">
<Price>$0.20</Price>
<TheUrl><![CDATA[http://www.example.com/path1/]]></TheUrl>
<Validated>N</Validated>
</MainType>
<MainType ID="123" comment="Test site">
<Price>$99.95</Price>
<TheUrl><![CDATA[http://www.example.com/path2]]></TheUrl>
<Validated>N</Validated>
</MainType>
<MainType ID="922" comment="Health Insurance">
<Price>$600.00</Price>
<TheUrl><![CDATA[http://www.example.com/eg/xyz.php]]></TheUrl>
<Validated>N</Validated>
</MainType>
<MainType ID="389" comment="Used Cars">
<Price>$5000.00</Price>
<TheUrl><![CDATA[http://www.example.com/tata.php]]></TheUrl>
<Validated>N</Validated>
</MainType>
</MyRoot>
Run Code Online (Sandbox Code Playgroud)
PHP CLI脚本:
#!/usr/bin/php-cli
<?php
$xml = file_get_contents("xpeg.xml");
$domdoc = new DOMDocument();
$domdoc->loadXML($xml);
// remove the default namespace binding
$e = $domdoc->documentElement;
$e->removeAttributeNS($e->getAttributeNode("xmlns")->nodeValue,"");
// hack hack, cough cough, …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种编写脚本的方法,该脚本将占用大约400个png图像并将它们合并/合并为一个.
我花了几天时间玩Python和C++的图像处理库.
如果有人能指出我知道具有此功能的特定语言或库,那将是非常棒的.
当我尝试在模式的末尾使用I选项进行不区分大小写的S&R时s/find-word/replace-word/Ig,我收到错误,命令是乱码.如果我在没有I的情况下运行它,完全相同的工作,即s/find-word/replace-word/g.我使用的是Solaris 5.10,我们的sed可能是旧的并且不支持我吗?
谢谢