- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个关于 XML 的问题...
给定一个像这样的 XML 节点
<Product name="Dave">
并使用 SelectSingleNode
分配给变量,$xmlNode.name
将返回 Dave。但是,如果 XML 是
<Product id="Dave">
然后$xmlNode.name
将返回Product。
由于“name”可以指节点的属性,也可以指节点本身的名称,这是否反对使用 Name 作为属性,最佳实践是使用像这里这样的 ID ?或者这真的不太可能成为问题吗?如果名称更有意义,那么就用它来运行?
给定一堆 Product 节点和这样的代码
$tempProducts = $temp.xml.SelectNodes('//Product')
Write-Host "$($tempProducts.GetType())"
将建议结果变量的类型为
System.Xml.XPathNodeList, System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
但是,[System.Xml.XPathNodeList]$tempProducts = $temp.xml.SelectNodes('//Product')
会抛出错误,
Unable to find type [System.Xml.XPathNodeList].
出现此问题是因为我一直在大型脚本中输入变量,并认为这可能会节省我一些调试时间。但这个条件似乎给我带来了麻烦。
有什么想法吗?
最佳答案
回复 1:
为了方便起见,PowerShell 适应 XML 元素,将其子节点及其属性显示为常规对象属性。
这通常使得在 PowerShell 中使用 XML 变得非常方便,但也有其缺陷:
如果与底层 System.Xml.XmlElement
的属性存在命名冲突类型,适应的属性优先。
示例 XML 中的 Name
属性 发生了这种情况:PowerShell 将其公开为 .Name
属性 ,它隐藏XMlElement
的.Name
属性,该属性报告标记名称。
一个简单的解决方法是调用属性访问器方法,.get_Name()
来获取隐藏的XmlElement
属性:
$node = ([xml] '<xml><Product Name="Dave" /></xml>').SelectSingleNode('//Product')
$node.Name # adapted property: Name *attribute* -> 'Dave'
$node.get_Name() # native property: tag name -> 'Product'
也就是说,如果您控制 XML 的格式,最好从一开始就避免此类冲突。
<小时/>回复2:
.SelectNodes()
也许令人惊讶的是返回一个派生自记录的 System.Xml.XmlNodeList
的类型返回类型并且派生类型本身不是公共(public)的:System.Xml.XPathNodeList
is internal
.
这在实践中不是问题,因为重要的是它可以充当 System.Xml.XmlNodeList
实例,但可能会造成困惑。
给定类型的实例,您可以检查类型的派生(基类链),如下所示:
$nodeList = ([xml] '<xml><Product Name="Dave" /><Product Name="Jane" /></xml>').SelectNodes('//Product')
$type = $nodeList.GetType()
do {
$type.FullName
} while ($type = $type.BaseType)
以上产量:
System.Xml.XPathNodeList
System.Xml.XmlNodeList
System.Object
关于XML 'name' 属性,以及带有 SelectNodes 的 XML 变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57435430/
我正在尝试解析这个字段,但无法让它工作 HtmlAgilityPack.HtmlNode link = doc.DocumentNode.SelectSingleNode("//ul[@cla
如果我在 XmlElement 上调用 SelectNodes,并像这样传递 XPath 查询: XmlNodeList nodes = xmlElement.SelectNodes("//Other
我有一个带有根元素、两个子元素“诊断”和“结果”的 xml 文档。然后,“results”元素具有任意数量的名为“result”的元素 当它被加载到 XmlDocument 中时,很容易浏览结构并看到
是否拉取Xpath支持的所有节点类型?好像当我打电话 selectNodes(“ @”) 它只是返回包含属性的元素,但我想自己获取属性列表。换句话说,我希望所得的节点集合仅包含Attr类型的节点...
使用根节点选择和使用文档对象选择节点有什么区别?首选哪种方式。 例如, 1. XmlDocument Doc = new XmlDocument(); Doc.Load(mem); XmlNodeLi
我有以下 XML: {2FCC78E0-EC60-E011-9854-000C291F081D} 我正在尝试使用 xmldoc.selectNodes("//a
令人惊讶的是 IXMLDOMDocument::selectNodes 没有按预期工作。我知道这是因为 xmlns="http://stackoverflow.com/questions/ask",但
我正在尝试创建一个通用的 XmlParsing 方法。以 Xml 为例: ... ... ..
我有以下 HTML: Headquarters Princeton New Jersey, United States
我正在尝试使用 SelectNodes 使用 HtmlAgilityPack 进行一些屏幕抓取,并从返回的每个节点获取一些值 这是代码 private readonly HtmlDocument _d
我想从 XML 文件中获取值,但我失败了。你能帮我指出问题吗??因为我已经非常努力地进行测试和谷歌搜索,但我仍然无法发现问题。 XML: - xxx false
我正在尝试从脚本节点和具有名为“relativeNav”的类的 ul 中选择节点。有人可以指导我走正确的道路吗?我一直在寻找这个一周,但我无法在任何地方找到它。目前我有这个,但它显然也选择了//ul[
我不确定为什么这不起作用。 我有一个已知格式的 XmlNode。它是: 我在名为pattern 的变量中引用了节点。我想要一个可
SelectNodes 和 GetElementsByTagName 之间的主要区别是什么。 最佳答案 SelectNodes是一个特定于 .NET/MSXML 的方法,它获取 XPath 的匹配节点
本文整理了Java中play.libs.XPath.selectNodes()方法的一些代码示例,展示了XPath.selectNodes()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中play.libs.XPath.selectNode()方法的一些代码示例,展示了XPath.selectNode()的具体用法。这些代码示例主要来源于Github/Stackov
我想遍历表中的所有行并选择所有 连续。 foreach (var r in Table.SelectNodes("tr")) { var Paragraphs = r.SelectNodes(
我对命名空间失去了理智。在遵循大多数关于如何使用 SelectNodes 的帖子之后,我终生无法弄清楚如何使用 SelectNodes。 我的xml:
Javascript: var req=xmlDoc.responseXML.selectSingleNode("//title"); alert(req.text); 如预期的那样,返回第一个“ti
我必须遵循以下XML文件: text:SOME_ID
我是一名优秀的程序员,十分优秀!