XPath 问题

Tasehouny 2003-08-13 12:39:27
有一XML
<?xml version="1.0" encoding="utf-8"?>
<MailAddrBook TimeStamp="37846.0186009722" Guid="04c9c6fa-c444-4413-af18-a9211f389174" PersonId="3">
<DeptFolder DeptId="91" DeptName="股东大会">
<DeptFolder DeptId="1" DeptName="董事会">
<DeptFolder DeptId="89" DeptName="执委会">
<DeptFolder DeptId="17" DeptName="财务部" />
<DeptFolder DeptId="21" DeptName="行政部" />
<DeptFolder DeptId="4582" DeptName="管理软件市场部" />
</DeptFolder>
</DeptFolder>
</DeptFolder>
<DeptFolder DeptId="3" DeptName="监事会" />
</DeptFolder>
</MailAddrBook>

已知一个节点的 DeptId="17",如何找出它的父节点 89 的写法。

//DeptFolder[@DeptId=17] ,只能找到它自己,如何找到父节点?

//DeptFolder[@DeptId=17]/../DeptFolder 怎么不行呢?
...全文
47 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tasehouny 2003-08-13
  • 打赏
  • 举报
回复
谢谢,问题解决了,在原来的代码上加上这一句:

_variant_t vLang = "XPath";
m_pXMLDom->setProperty(L"SelectionLanguage",vLang); //加上这一句就对了。
pNodePtr = m_pXMLDom->selectSingleNode(bsXPath);
saucer 2003-08-13
  • 打赏
  • 举报
回复
your xml is invalid, there is an extra </DeptFolder>, try

<MailAddrBook TimeStamp="37846.0186009722" Guid="04c9c6fa-c444-4413-af18-a9211f389174" PersonId="3">
<DeptFolder DeptId="91" DeptName="股东大会">
<DeptFolder DeptId="1" DeptName="董事会">
<DeptFolder DeptId="89" DeptName="执委会">
<DeptFolder DeptId="17" DeptName="财务部" />
<DeptFolder DeptId="21" DeptName="行政部" />
<DeptFolder DeptId="4582" DeptName="管理软件市场部" />
</DeptFolder>
</DeptFolder>
<DeptFolder DeptId="3" DeptName="监事会" />
</DeptFolder>
</MailAddrBook>

Tasehouny 2003-08-13
  • 打赏
  • 举报
回复
但我这样写不行,调用出错。用//DeptFolder[@DeptId=17]正确。

我是用的msxml3.dll 的导出类,是用VC6写的。
CString strXPath;
strXPath.Format("//DeptFolder[@DeptId=17]/..");
MSXML2::IXMLDOMNodePtr pNodePtr;
_bstr_t bsXPath = strXPath;
pNodePtr = m_pXMLDom->selectSingleNode(bsXPath); //这一句出错了!
saucer 2003-08-13
  • 打赏
  • 举报
回复
SelectSingleNode("//DeptFolder[@DeptId=17]/..");

62,040

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧