xml - 循环遍历 XML 文件中的所有节点以更改属性 - vb.net
问题描述
我有一个 XML 文件,我想在其中将所有名称为“产品”的节点中的属性“子类型”更改为其他值。但不知何故,我似乎对选择节点部分有问题。
我的 XML 如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY: PLM XML SDK 7.0.4.411 -->
<PLMXML xmlns="http://www.plmxml.org/Schemas/PLMXMLSchema" language="en-us"
time="16:26:35" schemaVersion="6" author="Teamcenter
V10000.1.0.70_20161101.00 - infodba@PESYS(1470348095)" date="2018-09-25">
<Product id="id35" name="78033031000" subType="Item" accessRefs="#id10"
productId="78033031000">
<Description>78033031000</Description>
<ApplicationRef application="Teamcenter" label="JfYtyiXp1pzuzD"
version="JfYtyiXp1pzuzD"></ApplicationRef>
</Product>
<Product id="id66" name="0405222613" subType="Item" accessRefs="#id10"
productId="0405222613">
<Description>0405222613</Description>
<ApplicationRef application="Teamcenter" label="yCdhv99n1pzuzD"
version="yCdhv99n1pzuzD"></ApplicationRef>
</Product>
<Product id="id90" name="59033080000" subType="Item" accessRefs="#id10"
productId="59033080000">
<Description>59033080000</Description>
<ApplicationRef application="Teamcenter" label="0OShlqVN1pzuzD"
version="0OShlqVN1pzuzD"></ApplicationRef>
</Product>
</PLMXML>
所以我的直观尝试是这样的:
'Load the XML file in XmlDocument.
Dim doc As New XmlDocument()
doc.Load("C:\export\79533500000.xml")
'Fetch the specific Nodes by Name.
Dim nodeList As XmlNodeList = doc.SelectNodes("/PLMXML/Product")
'Loop through the selected Nodes.
For Each node As XmlNode In nodeList
'Fetch the Node and Attribute values.
node("Product").SetAttribute("subType", "Product_Value12")
Next
doc.Save("C:\export\test_new.xml")
End Sub
这实际上什么也没做,所以我尝试将doc.SelectNodes("/PLMXML/Product")更改为doc.SelectNodes("*") ,它对“子类型”进行了属性更改,但仅针对第一个“产品”节点。
你能帮我告诉我我在这里做错了什么吗?
谢谢和问候伯恩哈德
解决方案
您缺少的是 XML 阅读器!阅读/更改/保存。试试看:
Dim doc As XmlDocument = New XmlDocument()
Dim xmlReader As XmlTextReader = New XmlTextReader(yourFilePath)
doc.Load(xmlReader)
Dim nodes As XmlNodeList = doc.SelectNodes("PLMXML/Product")
For Each node As XmlNode In nodes
If node.Attributes("subType").Value.ToString() = "Item" Then
node.Attributes("subType").Value = "New_Item"
End If
Next
xmlReader.Close()
doc.Save(yourFilePath)
推荐阅读
- javascript - 如果功能失败,如何使量角器测试失败?
- python - pandas:pd.concat 导致重复的列
- mysql - 在MySql5.0上发现死锁但在MySql5.6之后没有发现
- node.js - Winston 3.2.1 - TypeError: logger.error 不是函数
- javascript - 用于完全阻止特殊字符的正则表达式模式,并阻止空格开始和结束字符串,并允许在 javascript 中的单词之间
- airflow - 不同的行为取决于 DAG 是否被手动触发
- xml - 为什么批量较大的文件比相同大小的批量较小的文件处理得更快?
- flutter - Flutter:从 StatefulWidget 外部更新 UI
- prolog - Prolog - 每次递归运行都将头附加到新列表?
- python - 如何使用 Python 在 Airflow 中成功触发另一个 DAG 时触发 DAG?