PHP:如何遍历XML以查找节点?
我试图遍历XML以查找特定节点,然后修改其值。我想找到 我该怎么做?下面的xml将是一个字符串PHP:如何遍历XML以查找节点?,php,xml,Php,Xml,我试图遍历XML以查找特定节点,然后修改其值。我想找到 我该怎么做?下面的xml将是一个字符串 <?xml version="1.0"?> <?xml-stylesheet href="catalog.xsl" type="text/xsl"?> <!DOCTYPE catalog SYSTEM "catalog.dtd"> <catalog> <product description="Cardigan Sweater" p
<?xml version="1.0"?>
<?xml-stylesheet href="catalog.xsl" type="text/xsl"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<catalog>
<product description="Cardigan Sweater" product_image="cardigan.jpg">
<catalog_item gender="Men's">
<item_number>QWZ5671</item_number>
<price>39.95</price>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Large">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
</catalog_item>
<catalog_item gender="Women's">
<item_number>RRX9856</item_number>
<price>42.50</price>
<size description="Small">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
<identifiers>
<identifier>
<identifier_type>Test</identifier_type>
<identifier_value>000000001</identifier_value>
</identifier>
</identifiers>
</size>
<size description="Large">
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
<size description="Extra Large">
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
</catalog_item>
</product>
</catalog>
PHP有几个用于处理XML的插件。我会从其中一个开始。一种可能是SimpleXMLElement::xpath方法 从
如果您将整个目录甚至部分内容提交到Web页面,您可能需要考虑,以便不必手动解析XML。
PHPDOM扩展支持完整的XPath 1表达式。
$document = new DOMDocument();
$document->loadXML($xml);
$xpath = new DOMxpath($document);
// fetch and modify identifier_value node
$expression = '(//catalog_item//identifiers/identifier/identifier_value[.="000000001"])[1]';
foreach ($xpath->evaluate($expression) as $identifierValueNode) {
$identifierValueNode->textContent = '000000042';
// dump to validate
var_dump($document->saveXML($identifierValueNode));
}
输出:
string(46) "<identifier_value>000000042</identifier_value>"
string(7) "RRX9856"
float(42.5)
输出:
string(46) "<identifier_value>000000042</identifier_value>"
string(7) "RRX9856"
float(42.5)