通过其属性值获取 XElement
Get XElement by value of its attribute
我有以下 XML:
<rootNode>
... some stuff
<ReportCellRef>
<dang n="DVCompany" h="0" u="0" o="0" fmt="0">
... some stuff
</dang>
</ReportCellRef>
</rootNode>
而且我想获取 <dang ...> ... </dang>
节点作为 XElement,这样我就可以用另一个节点替换它,前提是我有 n
属性的值。
我有这个代码:
Dim nameToSearch = importNode.Attribute("n").Value
Dim replaceable = From dangToTake In xdoc.Elements("ReportCellRef") _
Where CStr(dangToTake.Element("dang").Attribute("n")) = nameToSearch
Select dangToTake
For Each nodeToReplace As XElement In replaceable
nodeToReplace.ReplaceWith(importNode)
Next nodeToReplace
但是 LINQ 查询没有产生任何结果...有什么想法吗?
您正在将 XAttribute 与其值进行比较。 CStr(dangToTake.Element("dang").Attribute("n"))
没有给你属性值。请尝试 dangToTake.Element("dang").Attribute("n").Value
。
在那里打一个 "Descendants()" 电话:
dim xdoc as XDocument = XDocument.Parse("<rootNode><ReportCellRef><dang n=""DVCompany"" h=""0"" u=""0"" o=""0"" fmt=""0""></dang></ReportCellRef></rootNode>")
Dim replaceable = From dangToTake In xdoc.Descendants().Elements("ReportCellRef") _
Where dangToTake.Element("dang").Attribute("n").Value = "DVCompany"
Select dangToTake
我有以下 XML:
<rootNode>
... some stuff
<ReportCellRef>
<dang n="DVCompany" h="0" u="0" o="0" fmt="0">
... some stuff
</dang>
</ReportCellRef>
</rootNode>
而且我想获取 <dang ...> ... </dang>
节点作为 XElement,这样我就可以用另一个节点替换它,前提是我有 n
属性的值。
我有这个代码:
Dim nameToSearch = importNode.Attribute("n").Value
Dim replaceable = From dangToTake In xdoc.Elements("ReportCellRef") _
Where CStr(dangToTake.Element("dang").Attribute("n")) = nameToSearch
Select dangToTake
For Each nodeToReplace As XElement In replaceable
nodeToReplace.ReplaceWith(importNode)
Next nodeToReplace
但是 LINQ 查询没有产生任何结果...有什么想法吗?
您正在将 XAttribute 与其值进行比较。 CStr(dangToTake.Element("dang").Attribute("n"))
没有给你属性值。请尝试 dangToTake.Element("dang").Attribute("n").Value
。
在那里打一个 "Descendants()" 电话:
dim xdoc as XDocument = XDocument.Parse("<rootNode><ReportCellRef><dang n=""DVCompany"" h=""0"" u=""0"" o=""0"" fmt=""0""></dang></ReportCellRef></rootNode>")
Dim replaceable = From dangToTake In xdoc.Descendants().Elements("ReportCellRef") _
Where dangToTake.Element("dang").Attribute("n").Value = "DVCompany"
Select dangToTake