为什么找不到xml中的节点?

szjarvis 2015-03-02 12:10:46
我的XML文件是.txt文件,里面格式是XML的,用以下方法找不到节点SuccessfulValidations.


XmlDocument doc = new XmlDocument();
doc.Load(txtFile);
XmlNode node = doc.SelectSingleNode("SuccessfulValidations");


请高手帮帮忙,我想取节点SuccessfulValidations下的所有子节点,从而取所有子点点下的属性.
...全文
940 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你这个是根节点吧?
於黾 2015-03-02
  • 打赏
  • 举报
回复
放出xml文件里关于SuccessfulValidations的那一段数据
szjarvis 2015-03-02
  • 打赏
  • 举报
回复
扩展名改成.xml也试过,也是不行.我用XmlNodeReader reader = new XmlNodeReader(doc);去做while (reader.Read())循环是可以的.
於黾 2015-03-02
  • 打赏
  • 举报
回复
扩展名改成.xml试过吗
WM_JAWIN 2015-03-02
  • 打赏
  • 举报
回复
好像是"/"这种斜杠
WM_JAWIN 2015-03-02
  • 打赏
  • 举报
回复
要加上路径啊 doc.SelectSingleNode("ComputerBuildReportAckResponse\ComputerBuildReportAcks\ComputerBuildReportAck\SuccessfulValidations");
  • 打赏
  • 举报
回复
有namespace,下面是用System.Xml.Linq来获取的
string xml = @"
<ComputerBuildReportAckResponse xmlns=""http://schemas.ms.it.oem/digitaldistribution/2010/10"">
  <ComputerBuildReportAcks>
    <ComputerBuildReportAck>
      <MSReportUniqueID>f5de0a5c-3810-4128-b1c1-acfaa470b87d</MSReportUniqueID>
      <CustomerReportUniqueID>c7b1274f-feaf-4e42-bee2-4575ccd5f288</CustomerReportUniqueID>
      <MSReceivedDateUTC>2014-06-23T00:00:00+0000</MSReceivedDateUTC>
      <SoldToCustomerID>200001208</SoldToCustomerID>
      <ReceivedFromCustomerID>200001208</ReceivedFromCustomerID>
      <CBRAckFileTotal>1</CBRAckFileTotal>
      <CBRAckFileNumber>1</CBRAckFileNumber>
 
      <SuccessfulValidations>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037148</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSYSHpenIh+VY/74KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037152</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSCHNjbCgtQDhPT4KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037156</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSMD8bXnIj7fC7C4KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037157</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSGtmLhpBWtcf6E4KU=</HardwareHash>
        </SuccessfulValidationResult>
      </SuccessfulValidations>
 
    </ComputerBuildReportAck>
  </ComputerBuildReportAcks>
</ComputerBuildReportAckResponse>";
            XElement root = XElement.Parse(xml);
            var nsp = root.GetDefaultNamespace().NamespaceName;
            var ele = root.Element(XName.Get("ComputerBuildReportAcks", nsp))
                .Element(XName.Get("ComputerBuildReportAck", nsp))
            .Element(XName.Get("SuccessfulValidations", nsp));
insus 2015-03-02
  • 打赏
  • 举报
回复
king4323210 2015-03-02
  • 打赏
  • 举报
回复
方式错了 前面要加root节点 比如/
szjarvis 2015-03-02
  • 打赏
  • 举报
回复
有人知道为什么会这样吗?
szjarvis 2015-03-02
  • 打赏
  • 举报
回复
整个XML文件就是这样子,要找的节点不是根.

<?xml version="1.0" encoding="UTF-8"?>
<ComputerBuildReportAckResponse xmlns="http://schemas.ms.it.oem/digitaldistribution/2010/10">
  <ComputerBuildReportAcks>
    <ComputerBuildReportAck>
      <MSReportUniqueID>f5de0a5c-3810-4128-b1c1-acfaa470b87d</MSReportUniqueID>
      <CustomerReportUniqueID>c7b1274f-feaf-4e42-bee2-4575ccd5f288</CustomerReportUniqueID>
      <MSReceivedDateUTC>2014-06-23T00:00:00+0000</MSReceivedDateUTC>
      <SoldToCustomerID>200001208</SoldToCustomerID>
      <ReceivedFromCustomerID>200001208</ReceivedFromCustomerID>
      <CBRAckFileTotal>1</CBRAckFileTotal>
      <CBRAckFileNumber>1</CBRAckFileNumber>

      <SuccessfulValidations>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037148</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSYSHpenIh+VY/74KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037152</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSCHNjbCgtQDhPT4KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037156</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSMD8bXnIj7fC7C4KU=</HardwareHash>
        </SuccessfulValidationResult>
        <SuccessfulValidationResult>
          <ProductKeyID>2621320037157</ProductKeyID>
          <HardwareHash>JgAAAAAAAAABAAAAAQAAAAAAAgABAAEAJJSGtmLhpBWtcf6E4KU=</HardwareHash>
        </SuccessfulValidationResult>
      </SuccessfulValidations>

    </ComputerBuildReportAck>
  </ComputerBuildReportAcks>
</ComputerBuildReportAckResponse>

62,074

社区成员

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

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

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

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