为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用streamreader提取xml文件编码?

如何使用streamreader提取xml文件编码?

C#
守着星空守着你 2021-11-21 16:12:30
我需要从 xml 文件的顶部获取编码类型<?xml version=“1.0” encoding=“utf-8”?>但只需要 encoding="utf-8"只有没有引号的“utf-8”,我如何使用streamreader来实现这一点?
查看完整描述

3 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您需要utf-8或encoding="utf-8"吗?该块因此返回utf-8。如果需要 encoding="utf-8",则需要更改。


using (var sr = new StreamReader(@"yourXmlFilePath"))

{

    var settings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };


    using (var xmlReader = XmlReader.Create(sr, settings))

    {

        if (!xmlReader.Read()) throw new Exception("No line");


        var result = xmlReader.GetAttribute("encoding"); //returns utf-8


    }

}


查看完整回答
反对 回复 2021-11-21
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

因为它是 xml,所以我会推荐XmlTextReader,它提供对 XML 数据的快速、非缓存、仅向前访问,并且因为声明在那里而只读取 xml 文件的顶部。请参阅以下方法:


string FindXmlEncoding(string path)

{

    XmlTextReader reader = new XmlTextReader(path);

    reader.Read();

    if (reader.NodeType == XmlNodeType.XmlDeclaration)

    {

        while (reader.MoveToNextAttribute())

        {

            if (reader.Name == "encoding")

                return reader.Value;

        }

    }

    return null;

}


查看完整回答
反对 回复 2021-11-21
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

我怎样才能做到这一点StreamReader?


像这样的东西:


using (StreamReader sr = new StreamReader("XmlFile.xml"))

{

    string line = sr.ReadLine();

    int closeQuoteIndex = line.LastIndexOf("\"") - 1;

    int openingQuoteIndex = line.LastIndexOf("\"", closeQuoteIndex);

    string encoding = line.Substring(openingQuoteIndex + 1, closeQuoteIndex - openingQuoteIndex);

}


查看完整回答
反对 回复 2021-11-21
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信