Php 选择xml文件中属性=值的父节点的所有子节点
我需要以下xml搜索的帮助。我不知道如何从按属性搜索的xml文件中搜索所有子节点。 详情如下 这是我的XML文件Php 选择xml文件中属性=值的父节点的所有子节点,php,xml,Php,Xml,我需要以下xml搜索的帮助。我不知道如何从按属性搜索的xml文件中搜索所有子节点。 详情如下 这是我的XML文件 单元1 模块1的通道1 myFunc 1 配置 myFunc 1 myFunc 1 myFunc 1 myFunc 1 模块1的通道2 myFunc 2 配置 myFunc 2 myFunc 2 myFunc 2 myFunc 2 单元2 模块2的通道1 myFunc 1 配置 myFunc 1 myFunc 1 myFunc 1 myFunc 1 模块2的通道2 myFunc 2
单元1
模块1的通道1
myFunc 1
配置
myFunc 1
myFunc 1
myFunc 1
myFunc 1
模块1的通道2
myFunc 2
配置
myFunc 2
myFunc 2
myFunc 2
myFunc 2
单元2
模块2的通道1
myFunc 1
配置
myFunc 1
myFunc 1
myFunc 1
myFunc 1
模块2的通道2
myFunc 2
配置
myFunc 2
myFunc 2
myFunc 2
myFunc 2
NI DAQmx任务
我的电压
配置
热的
环境足迹
卡斯特波尔
1.
10
例如:
我需要通过属性ch=4从上述xml中搜索所有数据
我该怎么做
<channeles ch="4">
<channelName>Channel 2 of Module 2</channelName>
<channelType>myFunc 2</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 2</eu>
<custScale>myFunc 2</custScale>
<rawMin>myFunc 2</rawMin>
<rawMax>myFunc 2</rawMax>
</channeles>
模块2的通道2
myFunc 2
配置
myFunc 2
myFunc 2
myFunc 2
myFunc 2
我真的被困在这里了,请任何人帮我举个例子。
提前谢谢。好了:
$xml = '<?xml version="1.0"?>
<systemConfigs>
<systemConfig cnfId="1">
<moduleName>Module 1</moduleName>
<channeles ch="1">
<channelName>Channel 1 of Module 1</channelName>
<channelType>myFunc 1</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 1</eu>
<custScale>myFunc 1</custScale>
<rawMin>myFunc 1</rawMin>
<rawMax>myFunc 1</rawMax>
</channeles>
<channeles ch="2">
<channelName>Channel 2 of Module 1</channelName>
<channelType>myFunc 2</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 2</eu>
<custScale>myFunc 2</custScale>
<rawMin>myFunc 2</rawMin>
<rawMax>myFunc 2</rawMax>
</channeles>
</systemConfig>
<systemConfig cnfId="2">
<moduleName>Module 2</moduleName>
<channeles ch="3">
<channelName>Channel 1 of Module 2</channelName>
<channelType>myFunc 1</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 1</eu>
<custScale>myFunc 1</custScale>
<rawMin>myFunc 1</rawMin>
<rawMax>myFunc 1</rawMax>
</channeles>
<channeles ch="4">
<channelName>Channel 2 of Module 2</channelName>
<channelType>myFunc 2</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 2</eu>
<custScale>myFunc 2</custScale>
<rawMin>myFunc 2</rawMin>
<rawMax>myFunc 2</rawMax>
</channeles>
</systemConfig>
<systemConfig cnfId="3">
<moduleName>NI DAQmx Task</moduleName>
<channeles ch="5">
<channelName>my Voltage</channelName>
<channelFunc>conFig</channelFunc>
<channelType>thermo</channelType>
<eu>EF</eu>
<custScale>custPol</custScale>
<rawMin>1</rawMin>
<rawMax>10</rawMax>
</channeles>
</systemConfig>
</systemConfigs>';
$doc = new DOMDocument();
$doc->loadXML($xml);
$selector = new DOMXPath($doc);
$list = $selector->query('//channeles[@ch="4"]');
$node = $list->item(0);
echo($doc->saveXML($node));
$xml='1!'
单元1
模块1的通道1
myFunc 1
配置
myFunc 1
myFunc 1
myFunc 1
myFunc 1
模块1的通道2
myFunc 2
配置
myFunc 2
myFunc 2
myFunc 2
myFunc 2
单元2
模块2的通道1
myFunc 1
配置
myFunc 1
myFunc 1
myFunc 1
myFunc 1
模块2的通道2
myFunc 2
配置
myFunc 2
myFunc 2
myFunc 2
myFunc 2
NI DAQmx任务
我的电压
配置
热的
环境足迹
卡斯特波尔
1.
10
';
$doc=新的DOMDocument();
$doc->loadXML($xml);
$selector=newdomxpath($doc);
$list=$selector->query('//channeles[@ch=“4”]');
$node=$list->item(0);
echo($doc->saveXML($node));
您是否知道我们已在此网站上回答了此问题?请不要重复回答。而只是简历或留下一个链接。嗯-这是一个重复的答案吗?我怎么知道呢?重复的答案是已经给出的答案(在您的例子中:通过执行xpath查询来检索节点,该查询检查属性值)。你可以通过搜索网站来判断。这里所问的主题相对来说是琐碎的,所以你可以假设这已经被问过并回答过了。因此,您可以搜索答案(这对您来说很容易,因为您已经有了如何回答它的概念,例如,您在搜索中添加了xpath)。然后你找到答案,然后链接它。谢谢Adidi,它帮助了我,我需要更多的帮助。请让我知道如何获取数组或变量中的所有节点值(搜索后)示例:foreach($node as$n){$cName=$doc->getElementsByTagName(“channelName”);}
$xml = '<?xml version="1.0"?>
<systemConfigs>
<systemConfig cnfId="1">
<moduleName>Module 1</moduleName>
<channeles ch="1">
<channelName>Channel 1 of Module 1</channelName>
<channelType>myFunc 1</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 1</eu>
<custScale>myFunc 1</custScale>
<rawMin>myFunc 1</rawMin>
<rawMax>myFunc 1</rawMax>
</channeles>
<channeles ch="2">
<channelName>Channel 2 of Module 1</channelName>
<channelType>myFunc 2</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 2</eu>
<custScale>myFunc 2</custScale>
<rawMin>myFunc 2</rawMin>
<rawMax>myFunc 2</rawMax>
</channeles>
</systemConfig>
<systemConfig cnfId="2">
<moduleName>Module 2</moduleName>
<channeles ch="3">
<channelName>Channel 1 of Module 2</channelName>
<channelType>myFunc 1</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 1</eu>
<custScale>myFunc 1</custScale>
<rawMin>myFunc 1</rawMin>
<rawMax>myFunc 1</rawMax>
</channeles>
<channeles ch="4">
<channelName>Channel 2 of Module 2</channelName>
<channelType>myFunc 2</channelType>
<channelFunc>conFig</channelFunc>
<eu>myFunc 2</eu>
<custScale>myFunc 2</custScale>
<rawMin>myFunc 2</rawMin>
<rawMax>myFunc 2</rawMax>
</channeles>
</systemConfig>
<systemConfig cnfId="3">
<moduleName>NI DAQmx Task</moduleName>
<channeles ch="5">
<channelName>my Voltage</channelName>
<channelFunc>conFig</channelFunc>
<channelType>thermo</channelType>
<eu>EF</eu>
<custScale>custPol</custScale>
<rawMin>1</rawMin>
<rawMax>10</rawMax>
</channeles>
</systemConfig>
</systemConfigs>';
$doc = new DOMDocument();
$doc->loadXML($xml);
$selector = new DOMXPath($doc);
$list = $selector->query('//channeles[@ch="4"]');
$node = $list->item(0);
echo($doc->saveXML($node));