无法从 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 属性 值,该链接是图像的子图像,图像是矩形的子图像,矩形图像是展开图像的子图像。
一些quick debugging shows that spreadNodes
is empty, to start with. The most obvious cause is that the element name is Spread
not spread
, and if we make this change, we see spreadNodes
has one element.
接下来,很明显 spreadNode.SelectNodes("//rectangle/image/link")
没有返回任何东西。同样,这可能是大写:将其更改为 //Rectangle/Image/Link
,然后我们 get a NullReferenceException
。至少有进步。
我们收到该异常是因为 linkNode.SelectSingleNode("LinkResourceURI")
返回 null。原来那是因为 LinkResourceURI
是一个属性,而你正在寻找一个元素。将其更改为 linkNode.Attributes["LinkResourceURI"].InnerText
和 everything works as expected.
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);
}
}
我正在尝试通过 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 属性 值,该链接是图像的子图像,图像是矩形的子图像,矩形图像是展开图像的子图像。
一些quick debugging shows that spreadNodes
is empty, to start with. The most obvious cause is that the element name is Spread
not spread
, and if we make this change, we see spreadNodes
has one element.
接下来,很明显 spreadNode.SelectNodes("//rectangle/image/link")
没有返回任何东西。同样,这可能是大写:将其更改为 //Rectangle/Image/Link
,然后我们 get a NullReferenceException
。至少有进步。
我们收到该异常是因为 linkNode.SelectSingleNode("LinkResourceURI")
返回 null。原来那是因为 LinkResourceURI
是一个属性,而你正在寻找一个元素。将其更改为 linkNode.Attributes["LinkResourceURI"].InnerText
和 everything works as expected.
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);
}
}