C# 如何在目录中获取嵌入值和文件名

C# 如何在目录中获取嵌入值和文件名,c#,openxml,C#,Openxml,我有一个docx文件,希望生成图片文件名/唯一ID组合的列表。 以下是docx文件的相关部分: <w:drawing> <wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="2C4CE07B" wp14:editId="12367BBF"> ... ... <a:graphicData uri="h

我有一个
docx
文件,希望生成图片文件名/唯一ID组合的列表。 以下是
docx
文件的相关部分:

  <w:drawing>
      <wp:inline distT="0" distB="0" distL="0" distR="0" wp14:anchorId="2C4CE07B" wp14:editId="12367BBF">
        ...
        ...            
          <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
            <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
              <pic:nvPicPr>
                <pic:cNvPr id="2" name="ProfileGraph.png" />
                <pic:cNvPicPr />
              </pic:nvPicPr>
              <pic:blipFill>
                <a:blip r:embed="rId9">
                  <a:extLst>
但是我不知道如何获取属于
bliplements
中每个
Blips
cNvPr元素

我是在考虑这个问题

 var names = from blip in blipElements
             where blip.Ancestors<Picture>().First<Picture>().Descendants<....>()
var name=来自bliplements中的blip
其中blip.祖先().First().subjects()

任何帮助都将不胜感激。

像这样的东西怎么样

var body = doc.MainDocumentPart.Document.Body;
var pics = body.Descendants<DocumentFormat.OpenXml.Drawing.Pictures.Picture>();
var result = pics.Select(p => new
    {
        Id = p.BlipFill.Blip.Embed.Value,
        Name = p.NonVisualPictureProperties.NonVisualDrawingProperties.Name.Value
    });
var body=doc.MainDocumentPart.Document.body;
var pics=body.subjects();
var result=pics.Select(p=>new
{
Id=p.BlipFill.Blip.Embed.Value,
Name=p.NonVisualPictureProperties.NonVisualDrawingProperties.Name.Value
});
其中,假定doc是已打开的WordProcessingDocument对象

结果变量将是匿名类型的IEnumerable,包含Id和Name属性

我对OpenXML的文字处理知识不太了解,但理论上,Embed和Name属性可能为null,因此我认为您可能需要在访问“.Value”属性之前测试null

var body = doc.MainDocumentPart.Document.Body;
var pics = body.Descendants<DocumentFormat.OpenXml.Drawing.Pictures.Picture>();
var result = pics.Select(p => new
    {
        Id = p.BlipFill.Blip.Embed.Value,
        Name = p.NonVisualPictureProperties.NonVisualDrawingProperties.Name.Value
    });