如何从XML类型文档中检索特定信息

时间:2019-02-13 15:48:14

标签: excel xml vba nodes

我正在Excel中处理VBA宏,以从CNC程序代码中收集信息。 到目前为止,我已经获得了材料类型,厚度,x和Y大小以及所用的数量。

我正在尝试获取“切割长度”-因此可以在成本计算中使用它。

这是XML代码段:

<Info num="6" name="Tools">
      <MC machine="psys_ETN_5">
        <Tool name="TN901" length="16262.96209" time="53.72817301" cutoutArea="8138.657052"/>
      </MC>
    </Info>

有很多“信息”行。 可能有不止一个“工具”行,但我只有在从“ TN901”行中取出任何东西之后。

我要捕获的数据是'Length =“ ######。##”'的值

我从这样的代码中捕获了我需要的其他所有内容:

<Material>316</Material>
      <SheetX>2000</SheetX>
      <SheetY>1000</SheetY>
      <Thickness>3</Thickness>
</Material>

使用如下代码:

    For Each nodemat In XMLDataDrg.SelectNodes("//Material")
        Matl = nodemat.Text
        Worksheets("Sheet4").Range("H" & RowA).Value = Matl
    Next
    For Each nodesht In XMLDataDrg.SelectNodes("//Thickness")
        Thk = nodesht.Text
        Worksheets("Sheet4").Range("I" & RowA).Value = Thk
    Next

但是这种类型的代码无法获得剪切长度。

有什么需要帮助的吗? :)

谢谢

西蒙(Simon)

2 个答案:

答案 0 :(得分:0)

厚度在您的示例中另存为XML元素。
该长度存储为XML属性。
(请参阅https://www.xmlfiles.com/xml/xml-attributes/

要读取XML属性,请查看: Read XML Attribute VBA

根据此处提供的代码,您应该可以通过以下方式解决问题:

$query = mysql_query("SELECT * FROM storage WHERE id={$id}");
$row = mysql_fetch_array($query);
echo '<input type="text" id="'.$row['id'].'" name="'.$row['id'].'" />';

答案 1 :(得分:0)

您可以使用xpath限制属性为Tool且值为name的{​​{1}}个元素,然后循环所有属性并写出。我正在从桌面上的文件中读取XML。

TN901

结果:

enter image description here