c# - xml节点实际上不是节点,需要获取属性

标签 c# xml

这是 xml:

<_text_column min_width="0" max_width="2031051">
    <PF_Para_Base align="center">
        <_char data_tag="PricesGoodText" font_size="35270" bold="true" italic="false" font_name="/ITC Franklin Gothic Demi" text_color="White">PricesGoodText</_char>
    </PF_Para_Base>
</_text_column>

我正在打开文件并将根附加到文件,因为我收到文件的多根错误

using (var fs = new StreamReader(fullFileName))
using (var xr = XmlReader.Create(fs, settings))
{
    while (xr.Read())
    {
        if (xr.NodeType == XmlNodeType.Element)
        {
            rootElement.Add(XElement.Load(xr.ReadSubtree()));
        }
    }
}

var attr = rootElement.Elements("char").Attribute("data_tag");

我需要从节点_char 中获取属性data_tag。它返回为 null

最佳答案

rootElement.Elements("_char").Attributes("data_tag"); 是错误的,因为Elements 只读取直接子元素,您应该使用后代:

rootElement.Descendants("_char").Select(c => c.Attribute("data_tag").Value); 

检查这个问题:What is the difference between Linq to XML Descendants and Elements

关于c# - xml节点实际上不是节点,需要获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864403/

相关文章:

XML targetNamespace 和元素的非限定声明

python - XML 写入文件 UnicodeDecodeError Python 2.7.3

c# - 处理异步 block 中异常的方法无法将返回对象转换为异步方法返回类型

c# - 在哪里可以找到适用于 C# 的简单但灵活的 JSON 解析器?

c# - 规范模式 - 使用 lambdas 创建复合规范 (C#)

c# - 如何为游戏等制作自定义安装程序?

Android 无法解析 Material 组件

c# - 无法在 Visual Studio 中更新 dll 引用

java - MalformedByteSequenceException 1 字节 UTF-8 序列的无效字节 1

c# - 反序列化具有不同 XmlRoot 元素名称的 XML 文件