- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到了以下 XML 片段,作为我正在使用最新的 OmniXML 快照进行处理的较大 XML 文件的一部分:
<OrderRequestHeader>
<!-- snipped XML bits here -->
<ShipTo>
<Address addressID="">
<Name xml:lang="en">SOME COMPANY</Name>
<PostalAddress name="default">
<DeliverTo>John Doe</DeliverTo>
<Street>123 Any St</Street>
<City>Nowhere</City>
<State>AK</State>
<PostalCode>99999</PostalCode>
<Country isoCountryCode="US">United States</Country>
</PostalAddress>
<Email/>
<Phone>
<TelephoneNumber>
<CountryCode isoCountryCode=""/>
<AreaOrCityCode/>
<Number></Number>
</TelephoneNumber>
</Phone>
</Address>
</ShipTo>
<!-- more XML stuff follows -->
</OrderRequestHeader>
我目前有一个变量指向 <ShipTo>
节点,并要选择 <Name>
的内容节点。我正在使用以下代码,但是 Node2
即将推出Nil
...
procedure ProcessXML;
var
Node1, Node2: IXMLNode;
begin
Node1 := FindNode(OrderHeader, 'ShipTo');
// the above is working. Node points to the <ShipTo> node
Node2 := SelectNode(Node1, 'Name');
// the above line doesn't work. Node2 is Nil
end;
为什么是Node2
Nil
?根据OmniXMLUtils.pas
中的帮助, SelectNode
将选择一个可能比下面不止一级的节点。肯定有一个<Name>
节点。甚至试图通过 XPathSelect(Node1, 'Name');
找到节点返回一个空列表。我是否以某种方式错误地使用了 OmniXML?是否可以调用 <Name>
节点,无需先选择 <Address>
节点?
最佳答案
SelectNode
工作正常,如果您在前面放置双斜杠字符:
var
FXMLDocument: IXMLDocument;
// Somewhere along the line
FXMLDocument := CreateXMLDocument
XMLLoadFromFile(FXMLDocument, 'WhateverFile.xml');
// or XMLLoadFromAnsiString(FXMLDocument, SomeStringVar);
var
QryNode, Node: IXMLNode;
begin
QryNode := FXMLDocument.DocumentElement;
Node := SelectNode(QryNode, 'ShipTo');
if Assigned(Node) then
begin
QryNode := SelectNode(Node, '//Name');
if Assigned(QryNode) then
ShowMessage('ShipTo Name is ' + QryNode.FirstChild.Text)
else
ShowMessage('Name not found');
end;
end;
如果您愿意,XPath 也可以正常工作:
implementation
var
FXMLDocument: IXMLDocument;
// Somewhere along the line
FXMLDocument := CreateXMLDocument
XMLLoadFromFile(FXMLDocument, 'WhateverFile.xml');
// or XMLLoadFromAnsiString(FXMLDocument, SomeStringVar);
function GetShipTo: string;
var
QryNode: IXMLNode;
Node: IXMLNode;
NodeList: IXMLNodeList;
begin
Result := '';
QryNode := FXMLDocument.DocumentElement;
// The following also work:
// '//Address/Name'
// '//Name'
NodeList := XPathSelect(QryNode, '//ShipTo/Address/Name');
if NodeList.Length > 0 then
QryNode := NodeList.Item[0]
else
QryNode := nil;
if Assigned(QryNode) then
Result := QryNode.FirstChild.Text; // Now has 'SOME COMPANY'
end;
关于xml - 德尔福 XE 和 OmniXML : Using SelectNode()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513917/
我正在尝试解析这个字段,但无法让它工作 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
我是一名优秀的程序员,十分优秀!