如何从属性元素中获取值

时间:2016-12-18 06:43:30

标签: php xml dom domdocument

如何获得价值类型=' Microsoft Lumia'。 这是输出:

android:background

这是我的语法:

<phone>
<model type="Microsoft Lumia">
<lumia id="Lumia 650">
<displaySize>4 Inch</displaySize>
<platformOS>Windows</platformOS>
</lumia>
<lumia id="Lumia 890">
<displaySize>5 Inch</displaySize>
<platformOS>Windows</platformOS>
</lumia>
有人可以帮助我!提前谢谢

2 个答案:

答案 0 :(得分:0)

你可以得到'Microsoft Lumia':

alert(document.getElementsByTagName("model")[0].getAttribute("type"));

更新部分: 作为您的评论请求:

var d = document.getElementsByTagName("model")[0].getAttribute("type");
  if(d == 'Microsoft Lumia'){
  alert(d);
 }

答案 1 :(得分:0)

您没有使用编程语言标记问题,但您的代码与使用DOM extension的PHP非常相似:

$roottag = $dom->getElementsByTagName("model")[0].getAttribute("type[contain='Microsoft Lumia']");

如果我理解正确,问题是您不知道如何获取model元素,其type属性的值包含'Microsoft Lumia'字符串。使用以下XPath表达式可以轻松完成此操作:

//model[contains(@type, 'Microsoft Lumia')]

双斜杠选择文档中的所有model元素。方括号中的条件过滤掉测试调用contains函数的结果集。该函数检查type属性值是否包含给定的关键字。

幸运的是,DOM扩展通过其DOMXPath类支持XPath。如果您的代码不是PHP,您仍然可以用您的语言找出解决方案。一般的想法是使用如上所示的XPath。

PHP中的示例

以下示例打印包含type关键字的Lumia属性值。

$xml = <<<'XML'
<phone>
  <model type="Microsoft Lumia">
    <lumia id="Lumia 650">
      <displaySize>4 Inch</displaySize>
      <platformOS>Windows</platformOS>
    </lumia>
    <lumia id="Lumia 890">
      <displaySize>5 Inch</displaySize>
      <platformOS>Windows</platformOS>
    </lumia>
  </model>
  <model type="MS Lumia">
    <lumia id="X">
      <displaySize>5 Inch</displaySize>
      <platformOS>Windows</platformOS>
    </lumia>
  </model>
</phone>
XML;
$doc = new DOMDocument;
$doc->loadXML($xml);

$xpath = new DOMXPath($doc);
// See https://www.w3.org/TR/xpath/#function-contains
$keyword = 'Lumia';
$models = $xpath->query("//model[contains(@type, '{$keyword}')]");
foreach ($models as $m) {
  printf(
    "«%s» contains «%s»\n",
    $m->getAttribute('type'),
    $keyword
  );
}

输出

«Microsoft Lumia» contains «Lumia»
«MS Lumia» contains «Lumia»