繁体   English   中英

无法从 xml 个节点获取值

[英]Unable to get values from xml nodes

我正在尝试解析 xml 并获取一些值并尝试了多种方法,但我无法获取这些值。

这是我到目前为止尝试过的

        string fileName = @"C:\Users\one\OneDrive\Desktop\PP\SnippetWithImage.idms";
        string xmlString = System.IO.File.ReadAllText(fileName);

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load(fileName);
        XmlNodeList spreadNodes = xmlDoc.GetElementsByTagName("spread");
        foreach (XmlNode spreadNode in spreadNodes)
        {
            var linkNodes = spreadNode.SelectNodes("//rectangle/image/link");
            foreach (XmlNode linkNode in linkNodes)
            {
                Console.WriteLine("path : " + linkNode.SelectSingleNode("LinkResourceURI").InnerText);
            }
        }

这里的 spreadNodes 计数始终为 0。

我也尝试过使用 XElements 并使用 Decendents,但结果相同。

这里是xml结构https://codebeautify.org/xmlviewer/y22db1f26

我正在加载的文件是一个 InDesign 片段文件。 我正在尝试从链接中获取 linkResourceURI 属性值,链接是图像的子项,矩形是传播的子项。

一些快速调试显示spreadNodes是空的,首先。 最明显的原因是元素名称是Spread而不是spread ,如果我们进行此更改,我们会看到spreadNodes有一个元素

接下来, spreadNode.SelectNodes("//rectangle/image/link")显然没有返回任何内容。 同样,这可能是大写:将其更改为//Rectangle/Image/Link ,我们得到一个NullReferenceException 进步,至少。

我们收到该异常是因为linkNode.SelectSingleNode("LinkResourceURI")返回 null。原来这是因为LinkResourceURI是一个属性,而您正在寻找一个元素。 将其更改为linkNode.Attributes["LinkResourceURI"].InnerText一切都按预期工作

XmlNodeList spreadNodes = xmlDoc.GetElementsByTagName("Spread");
foreach (XmlNode spreadNode in spreadNodes)
{
    var linkNodes = spreadNode.SelectNodes("//Rectangle/Image/Link");
    foreach (XmlNode linkNode in linkNodes)
    {
        Console.WriteLine("path : " + linkNode.Attributes["LinkResourceURI"].InnerText);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM