从xml读取数据

本文关键字:数据 读取 xml | 更新日期: 2023-09-27 18:25:42

我有那个xml文件

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel"
 xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
 xmlns:html="http://www.w3.org/TR/REC-html40">
  <DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
    bla bla bla
  </DocumentProperties>
  <OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
    <AllowPNG/>
  </OfficeDocumentSettings>
  <ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
    <SupBook>
      <Path>text</Path>
      <SheetName>text</SheetName>
      <SheetName>text</SheetName>
      <SheetName>cancellation</SheetName>
      <SheetName>text</SheetName>
      <SheetName>Pivot</SheetName>
      <SheetName>list</SheetName>
      <SheetName>text</SheetName>
      <Xct>
        <Count>5173</Count>
        <SheetIndex>0</SheetIndex>
        <Crn>
          <Row>0</Row>
          <ColFirst>1</ColFirst>
          <ColLast>9</ColLast>
          <Text>text</Text>
          <Text>text</Text>
          <Text>text</Text>
          <Number>0</Number>
          <Text>text</Text>
          <Number>0</Number>
          <Number>0</Number>
          <Number>0</Number>
          <Number>0</Number>
        </Crn>
        <Crn>
          <Row>1</Row>
          <ColFirst>1</ColFirst>
          <ColLast>5</ColLast>
          <Number>49</Number>
          <Text>text</Text>
          <Text>text</Text>
          <Number>0</Number>
          <Text>text</Text>
        </Crn>
   </ExcelWorkbook>
</Workbook>

它由许多大型xml代码(大约5000个)组成。我正在尝试从Crn中选择TEXT元素。我怎样才能做到这一点?

我正在尝试这个:

IEnumerable<string> ss = from q in XDocument.Load(path).Descendants("Crn")                                                          
select q.Element("Text").Value;
            foreach (var x in ss)
            {
                Console.WriteLine(x);
            }

但这并没有给出任何值

从xml读取数据

查询XML时需要添加与之关联的命名空间。这将为您提供预期的输出:-

 XNamespace ns = "urn:schemas-microsoft-com:office:excel";
 IEnumerable<string> ss = xdoc.Descendants(ns + "Crn")
                              .Elements(ns + "Text")
                              .Select(x => (string)x);