c ++中的Xpath查询(Xpath Query in c++)
我需要在C ++中使用xpath查询来直接从节点
<revisions>
获取idNumber
。 我尝试了以下内容,它总是返回null
。 请让我知道我做错了什么。xml文件:
<?xml version="1.0" encoding="UTF-8" ?> <cw:vessel version="1.07.0075" creationDate="2016-01-26" xmlns:cw="urn:container"> <!-- saved from url=(0024)http://www.systemsoftsol.com/ --> <Exchanger> <revisions> <revision> <idNumber>1401889476</idNumber> <revNumber>0</revNumber> <revDate>2014-06-04</revDate> <operator>devin</operator> <notes>read me</notes> </revision> </revisions> </Exchanger> </cw:vessel>
我的代码到目前为止:
void GetProperties() { HRESULT hr = NOERROR; CComPtr<::IXMLDOMDocument3> m_pxmlDomDocument = NULL; CComPtr<::IXMLDOMNode> pNode = NULL; IXMLDOMNodeList* pChildlist = NULL; VARIANT_BOOL vLoadBool = VARIANT_FALSE; hr = m_pxmlDomDocument.CoCreateInstance(__uuidof(DOMDocument60)); hr = m_pxmlDomDocument->setProperty(BSTR(L"SelectionLanguage"), (CComVariant)L"XPath"); hr = m_pxmlDomDocument->setProperty((CComBSTR)"MaxElementDepth", (CComVariant)INT_MAX); if (FAILED(hr)) { hr = ERROR_XML_PARSE_ERROR; } CComVariant varXmlFileName(_T("xmlfileinput")); m_pxmlDomDocument->load(varXmlFileName, &vLoadBool); hr = m_pxmlDomDocument->get_documentElement(&pDocRoot); hr = pDocRoot->selectSingleNode(_T("//Exchanger"), &pNode); pNode->get_childNodes(&pChildlist); long size; hr = pChildlist->get_length(&size); for (int i = 0; i < size; i++) { CComPtr<::IXMLDOMNode> referNode; hr = pChildlist->get_item(i, &referNode); if (referNode != NULL) { CString csXPathQuery; csXPathQuery.Append(_T("/idNumber"));// i need this from above xml CComBSTR csBstrQuery(csXPathQuery); CComPtr<::IXMLDOMNode> pPa; hr = referNode->selectSingleNode(csBstrQuery.m_str, &pPa); } } }
selectSingleNode()
在上面的代码片段中返回null
,即使我在xml文件中仍然有idNumber
。I need a xpath query in C++ to get the
idNumber
directly from the node<revisions>
. I tried the following and it always returnsnull
. Please let me know what I am doing wrong.xml File:
<?xml version="1.0" encoding="UTF-8" ?> <cw:vessel version="1.07.0075" creationDate="2016-01-26" xmlns:cw="urn:container"> <!-- saved from url=(0024)http://www.systemsoftsol.com/ --> <Exchanger> <revisions> <revision> <idNumber>1401889476</idNumber> <revNumber>0</revNumber> <revDate>2014-06-04</revDate> <operator>devin</operator> <notes>read me</notes> </revision> </revisions> </Exchanger> </cw:vessel>
My code so far:
void GetProperties() { HRESULT hr = NOERROR; CComPtr<::IXMLDOMDocument3> m_pxmlDomDocument = NULL; CComPtr<::IXMLDOMNode> pNode = NULL; IXMLDOMNodeList* pChildlist = NULL; VARIANT_BOOL vLoadBool = VARIANT_FALSE; hr = m_pxmlDomDocument.CoCreateInstance(__uuidof(DOMDocument60)); hr = m_pxmlDomDocument->setProperty(BSTR(L"SelectionLanguage"), (CComVariant)L"XPath"); hr = m_pxmlDomDocument->setProperty((CComBSTR)"MaxElementDepth", (CComVariant)INT_MAX); if (FAILED(hr)) { hr = ERROR_XML_PARSE_ERROR; } CComVariant varXmlFileName(_T("xmlfileinput")); m_pxmlDomDocument->load(varXmlFileName, &vLoadBool); hr = m_pxmlDomDocument->get_documentElement(&pDocRoot); hr = pDocRoot->selectSingleNode(_T("//Exchanger"), &pNode); pNode->get_childNodes(&pChildlist); long size; hr = pChildlist->get_length(&size); for (int i = 0; i < size; i++) { CComPtr<::IXMLDOMNode> referNode; hr = pChildlist->get_item(i, &referNode); if (referNode != NULL) { CString csXPathQuery; csXPathQuery.Append(_T("/idNumber"));// i need this from above xml CComBSTR csBstrQuery(csXPathQuery); CComPtr<::IXMLDOMNode> pPa; hr = referNode->selectSingleNode(csBstrQuery.m_str, &pPa); } } }
selectSingleNode()
returnsnull
in the above piece of code even though I still have theidNumber
in the xml file.
原文:https://stackoverflow.com/questions/35580202
满意答案
我刚写了一些可能有帮助的代码。 这还没有使用任何scala DSL用于硒。
class EnrollTest extends FlatSpec with ShouldMatchers{ var driver = new FirefoxDriver driver.manage.timeouts.implicitlyWait(10, TimeUnit.SECONDS) val beginnersPage = BeginnersPage.open(driver) "Enroll button" should "open enroll page" in { try { val timeOfFirstCourse = beginnersPage.enrollForTheFirstCourse val enrollPage = new EnrollPage(driver) enrollPage.shouldBeOpen enrollPage.courseDetails should include(timeOfFirstCourse) } finally{ driver.quit } } }
和页面类:
object BeginnersPage{ val url = "http://"+System.getProperty("testUrl", "www.2ndlanguage.co.uk")+"/beginners.action" def open(driver : WebDriver) : BeginnersPage = { driver.get(url) new BeginnersPage(driver) } } class BeginnersPage(driver : WebDriver){ private var firstEnrollButton: WebElement = driver.findElement(By.xpath("//div[@class='newPriceBoxRight']/a/div")) private var firstCourseTime: WebElement = driver.findElement(By.xpath("//div[@class='newPriceBoxLeft']//span[@id='time']")) def enrollForTheFirstCourse : String = { val time = firstCourseTime.getText firstEnrollButton.click time } } class EnrollPage(driver : WebDriver){ def isOpen = driver.getCurrentUrl startsWith "http://www.2ndlanguage.co.uk/offer.action" def courseDetails = driver.findElement(By.id("courseDetailsTextArea")).getText }
I just wrote some code which might be of help. This isn't using any scala DSL for selenium yet.
class EnrollTest extends FlatSpec with ShouldMatchers{ var driver = new FirefoxDriver driver.manage.timeouts.implicitlyWait(10, TimeUnit.SECONDS) val beginnersPage = BeginnersPage.open(driver) "Enroll button" should "open enroll page" in { try { val timeOfFirstCourse = beginnersPage.enrollForTheFirstCourse val enrollPage = new EnrollPage(driver) enrollPage.shouldBeOpen enrollPage.courseDetails should include(timeOfFirstCourse) } finally{ driver.quit } } }
And the page classes:
object BeginnersPage{ val url = "http://"+System.getProperty("testUrl", "www.2ndlanguage.co.uk")+"/beginners.action" def open(driver : WebDriver) : BeginnersPage = { driver.get(url) new BeginnersPage(driver) } } class BeginnersPage(driver : WebDriver){ private var firstEnrollButton: WebElement = driver.findElement(By.xpath("//div[@class='newPriceBoxRight']/a/div")) private var firstCourseTime: WebElement = driver.findElement(By.xpath("//div[@class='newPriceBoxLeft']//span[@id='time']")) def enrollForTheFirstCourse : String = { val time = firstCourseTime.getText firstEnrollButton.click time } } class EnrollPage(driver : WebDriver){ def isOpen = driver.getCurrentUrl startsWith "http://www.2ndlanguage.co.uk/offer.action" def courseDetails = driver.findElement(By.id("courseDetailsTextArea")).getText }
相关问答
更多在Scala Specs中,什么是“必须”功能?(In Scala Specs, what is the “must” function?)
Scala specs2与“aka”匹配(Scala specs2 matchers with “aka”)
ScalaTest和Scala Specs单元测试框架有什么区别?(What’s the difference between ScalaTest and Scala Specs unit test frameworks?)
规格2:使用Hamcrest匹配器(Specs2: Use a Hamcrest matcher)
剧本中的Specs2测试让我“找不到类型为org.specs2.main.CommandLineAsResult的证据参数的隐式值(Specs2 test within plays gives me "could not find implicit value for evidence parameter of type org.specs2.main.CommandLineAsResult)
如何在eclipse中运行scala specs 2(How to run scala specs 2 in eclipse)
验收风格测试有利于使用Specs2进行单元样式测试?(Acceptance style testing in favour of unit style testing with Specs2?)
在将scala(specs2)升级到最新的稳定版本之后,ibatis开始在测试中抛出异常(After upgrading scala (specs2) to newest stable version ibatis started to throw exceptions in test)
硒,规格和斯卡拉(Selenium, specs and scala)
规格2,顺序与否(Specs2, sequential or not)
相关文章
更多《C/C++图像处理编程》扫描版[PDF]
谁给推荐一个C++的JSON库
C++ Hadoop实战备忘
《轻松学C++编程》扫描版[PDF]
java server怎样和c++ client实现SSL通信??
《上海交大C++面向对象》[RMVB]
solr delete query
solr delete query
《数据结构(C++版)(第2版)》扫描版[PDF]
《新版 Visual C++全能速查宝典》扫描版[PDF]
最新问答
更多您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
在计算机拍照在哪里进入
使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
单页应用程序:页面重新加载(Single Page Application: page reload)
在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
Copyright ©2023 peixunduo.com All Rights Reserved.粤ICP备14003112号
本站部分内容来源于互联网,仅供学习和参考使用,请莫用于商业用途。如有侵犯你的版权,请联系我们(neng862121861#163.com),本站将尽快处理。谢谢合作!