[英]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.