Tag: xpath

“表达式必须评估为节点集。”

我有个问题 我的XML文件在这里; Tarih 24.07.2013 18:59:45 USD 1.9120 1.9220 EUR 2.5280 2.5430 我如何解析这个XML文件 我编码的方式,但我得到一个解析错误信息; if (tip == DövizKuruTipi2.Alış) Line 44: return Decimal.Parse(doc.SelectNodes(“//ALTINKAYNAK/DOVIZ/ADI=” + dovizKuru2 + “/ALIS”)[0].InnerText.Replace(‘.’, ‘,’)); 表达式必须评估为节点集

C#XmlDocument SelectNodes

我有一个带有根元素的xml文档,两个子元素,’diagnostic’和’results’。 然后’results’元素具有任意数量的元素,名称为’result’ 当它被加载到XmlDocument中时,很容易导航结构并看到这正是操作的方式。 我可以编写一个递归函数来挑选出所有“结果”元素。 XmlDocument.SelectNodes(“// results”)找到一个节点没问题。 但是,* XmlDocument.SelectNodes(“// results / result”)什么都没找到。 * XmlDocument.SelectNodes(“// result”)什么都没找到。 我和一位同事谈过,他在XmlDocument.SelectNodes中使用Xpath感到很悲伤。 还有其他人遇到过这种问题吗? 有解决方案? XML文件: true 49 47 2579 Kakungulu Cup winners SC Villa face Tanzania’s Simba SC this afternoon at the National stadium in Dar es salaam. “We had a very tiresome journey. The road was so bad and the road […]

选择包含特定属性的所有xml节点

我必须选择包含具有特定名称的属性的所有节点。 这是我目前的工作方法。 public List RetrieveValuesForAttribute(string attributeName) { var list = new List(); string xpath = “//*[@Name='” + attributeName + “‘]”; XmlNodeList xmlNodeList = document.SelectNodes(xpath); foreach (XmlNode xmlNode in xmlNodeList) { list.Add(xmlNode.Attributes[attributeName].InnerText); } return list; } 我尝试选择包含具有方法参数attributeName给出的名称的属性的所有节点,并将值添加到变量list 。 例: 这个方法调用: List result = RetrieveValuesForAttribute(“itemSelectedHandler”); 应返回包含字符串“OnSelectedRelatedContactChanged”的列表 这是xml文件: 0 false 0 false 0 true 进一步的问题:用LINQ解决这个问题会更好吗? 解决方案1:谢谢你,嗯 public List […]

BizTalk服务器问题

我们公司有一个biztalk服务器(一个虚拟的(1!)…)和一个保存数据的sql server。 现在我们有很多数据流量。 我说的是成千上万。 所以我实际上不确定一台服务器是否相当安全,但我们的公司并不那么容易说服。 最近我们遇到了很多问题。 请允许我详细说明,所以我没有遗漏任何东西: 我们的服务器有5个应用: 一个有3个编排,12个发送端口,16个接收位置。 一个有4个编排,32个发送端口,20个接收位置。 一个有4个编排,24个发送端口,20个接收位置。 一个有47个(是47个)编排,37个发送端口,6个接收位置。 一个具有几个资源的常见应用程序。 自从我们使用47个业务流程部署应用程序以来,我们遇到了问题。 很多这些编排使用赋值形状,使用c#代码进行映射。 这是因为我们使用HL7扩展,这有点特殊,所以通过使用c#code和xpath,映射更容易,因为很多这些模式看起来很相似。 c#读入通过xpath接收的XmlNodes,并返回XmlNode,然后再将其分配给biztalk消息。 我不确定这可能是原因,但我想我会提到它。 发送和接收端口有许多不同的类型:文件,MQSeries,SQL,MLLP,FTP。 每种类型都有不同的主机实例,以平衡负载。 我们的业务流程使用BiztalkApplication主机。 在这个服务器上还运行了几个脚本,主要是ftp上传脚本和拉链脚本,每天拉链文件每半小时压缩一次,并在一个月后删除zip文件。 我们在备份文件上使用这个zipscript(我们备份很多,备份也在我们的服务器上),我们这样做是因为服务器在将文件发送到有很多(很多)文件的位置时出现问题,所以之后文件减少到拉链它变得更好。 现在我们最近遇到的问题主要是两个主要问题: 我们最重要的问题如下。 我们在队列中保留了一个包含大量消息的接收位置以进行测试。 在我们启动这个使用47个业务流程的接收位置之后,正在运行的服务实例开始向天空摇滚。 好的,这很正常。 假设大约10000,然后我们停止接收位置以查看biztalk如何处理这10000个实例。 通常情况下,它们会很快下降,有时会发生故障,但过了一段时间它会开始“节流”,这意味着它们只是停止处理并且服务实例保持相同的数字,例如在30秒内它从10000下降到4000,然后它保持在4000并且它非常非常缓慢地降低,例如在5分钟或者30分钟内降低。 所以这意味着,其他应用程序的所有其他服务实例也都停留在这里,并且它们也没有被处理。 我们注意到在重新启动主机实例后,实例编号再次快速下降。 因此,我们尝试有选择地重新启动不同的主机实例以找到问题。 我们注意到最终重新启动文件发送/接收主机实例就可以了。 所以我们认为文件发送会成为问题。 结合我们做了很多备份。 所以我们用mqseries备份替换了文件类型备份。 发生同样的问题,有趣的是,重新启动文件发送/接收主机仍然可以解决问题。 在事件查看器中也找不到任何错误。 我们遇到的第二个问题是。 有时在早上6点左右,全部或部分主机实例正在停止。 在事件查看器中,我们注意到以下错误(这些错误不止一个): 具有URL“SQL:// ZNACDBPEG / mdnd0001 /”的接收位置“MdnBericht SQL”正在关闭。 详细信息:“已超出错误阈值。接收位置正在关闭。”。 消息传递引擎无法将具有URL“\ m2mservices \ Othello_import $ \ […]

XML命名空间和XPath

我有一个应用程序,必须根据XPath加载XML文档和输出节点。 假设我从这样的文档开始: …[many nodes here]… text …[many nodes here]… text …[many nodes here]… 使用XPath //bbb 到目前为止一切都很好。 并选择doc.SelectNodes(“//bbb”); 返回所需节点的列表。 然后有人上传一个文档,其中包含一个节点,如和根标签中的额外命名空间,一切都会中断。 为什么? //bbb对myfancynamespace ,理论上它甚至应该对//myfancynamespace:foo ,因为没有歧义,但表达式返回0结果,就是这样。 这种行为有解决方法吗? 我确实有一个文档的命名空间管理器,我将它传递给Xpath查询。 但我不知道命名空间和前缀,所以我无法在查询之前添加它们。 在进行任何选择之前,是否必须预先解析文档以填充命名空间管理器? 为什么在地球上这样的行为,它只是没有意义。 编辑: 我正在使用: XmlDocument和XmlNamespaceManager EDIT2: XmlDocument doc = new XmlDocument(); doc.XmlResolver = null; XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); //I wish I could: //nsmgr.AddNamespace(“magic”, “http://magicnamespaceuri/ //… doc.LoadXML(usersuppliedxml); XmlNodeList nodes […]

如何使用“路径”查询XDocument?

我想查询给定路径的XDocument对象,(例如“/ path / to / element / I / want”)但我不知道如何继续。

使用HtmlAgilityPack从节点获取文本

我有以下HTML: Blah. I want this text. 什么是提取字符串“ I want this text. ”的XPath表示法? 编辑:我不一定要一个XPath表达式来提取字符串。 选择多个节点,并迭代它们以产生句子,也会很棒。 HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(myHtml); doc.DocumentNode.SelectSingleNode(“??????”);

使用HtmlAgilityPack计算特定子节点

我在HtmlAgilityPack中使用的这个XPath选项有很多麻烦。 我想选择嵌套在另一个li所有li元素(如果它们存在),其中有a带有id=”menuItem2″ a标记。 这是html示例: 这是我一直在使用的XPath。 当我丢失这部分/ul/li ,它会给我a我想要a标签,但我需要他的后代…这个XPath总是返回null。 string xpathExp = “//a[@id='” + parentIdHtml + “‘]/ul/li”; HtmlNodeCollection liNodes = htmlDoc.DocumentNode.SelectNodes(xpathExp);

使用Html Agility Pack获取给定标记的所有属性值

我想用html agility pack获取’span’标签的’id’属性的所有值。 但我没有标记自己的标签。 这是代码 private static IEnumerable GetAllID() { HtmlDocument sourceDocument = new HtmlDocument(); sourceDocument.Load(FileName); var nodes = sourceDocument.DocumentNode.SelectNodes( @”//span/@id”); return nodes.Nodes().Select(x => x.Name); } 如果有人告诉我这里有什么问题,我将不胜感激。

Selenium的GetAttribute方法的并发症

我最近尝试使用selenium RC的GetAttribute方法,但立即遇到了挑战。 我试图执行一个非常简单的selenium.GetAttribute(“//a/@href”)但代码抛出了一个SeleniumException,消息为“ERROR:找不到元素属性:// a / @ href” 。 通过用selenium.GetText(“//a[@href]”)代替GetAttribute调用,我确认一个元素肯定存在,因为这个语句正确地返回了链接的文本。 然后我尝试了: 指向具有不同协议的不同网页(文件:/// vs http://) – 同样的问题。 使用指向不同属性的不同xpath定位器 – 同样的问题。 使用DOM定位器selenium.GetAttribute(“document.getElementsByTagName(‘a’)[0].getAttribute(‘href’)”) – 同样的问题; 稍有不同的错误消息(并且错误消息缺少最后的括号): “错误:元素document.getElementsByTagName(’a’)[0] .getAttribute(’href’not found” 。请注意,此精确表达式在Firebug中正常工作安慰。 使用绝对而不是相对xpath寻址,使用selenium.GetText(“xpath=/html/body/a[@href]”)来确认存在,然后使用selenium.GetAttribute(“xpath=/html/body/a/@href”)获得属性 – 它工作了! 虽然本手册明确指出相对 xpath定位器不需要显式定位器类型(即“xpath =”前缀),但它对绝对 xpath定位器保持沉默; 我从中解释说前缀是必需的。 但出于好奇,我回到了我的相对表达式并添加了显式前缀 – 将selenium.GetAttribute(“//a/@href”)更改为selenium.GetAttribute(“xpath=//a/@href”) – – 这也有效! 最后,我在Selenium IDE中使用非常方便的“ 查找”按钮进行的​​实验表明,它可以很好地处理元素,但是会失败并带有属性。 我可以理解,突出属性没有意义,因为属性不是可见的页面元素,但为什么不突出显示包含属性的元素,并使其以不同的颜色? 也许不是一项微不足道的任务…… 我的问题: 我将上述实验的结果归结为这些问题; 这是我在这里发布的全部目的! 这些似乎对我来说都是一个错误,但如果您认为我的使用不正确或有解决方法,请告诉我: 为什么具有XPath定位器类型的GetAttribute在其他方法(例如GetText)不需要时才需要显式定位器类型? 为什么DOM定位器因“未找到”错误而失败? (该手册还明确指出DOM定位器不需要显式的定位器类型前缀,但我仍然尝试在DOM测试中添加“dom =”作为前缀;它仍然失败。) 为什么Selenium IDE在尝试突出显示(查找)属性时不会更优雅地失败? […]