相关疑难解决方法(0)

从XmlDocument获取带换行符的缩进XML的最简单方法是什么?

当我从头开始构建XML时XmlDocument,该OuterXml属性已经通过换行符很好地缩进了所有内容.但是,如果我调用LoadXml一些非常"压缩"的XML(没有换行或缩进),那么输出会OuterXml保持这种状态.所以......

从一个实例中获取美化XML输出的最简单方法是XmlDocument什么?

.net c# xmldocument outerxml

102
推荐指数
7
解决办法
14万
查看次数

如何使用XmlWriter将编码属性放到utm-16的xml中?

我有一个创建一些XmlDocument的函数:

public string CreateOutputXmlString(ICollection<Field> fields)
{
    XmlWriterSettings settings = new XmlWriterSettings();
    settings.Indent = true;
    settings.Encoding = Encoding.GetEncoding("windows-1250");

    StringBuilder builder = new StringBuilder();
    XmlWriter writer = XmlWriter.Create(builder, settings);

    writer.WriteStartDocument();
    writer.WriteStartElement("data");
    foreach (Field field in fields)
    {
        writer.WriteStartElement("item");
        writer.WriteAttributeString("name", field.Id);
        writer.WriteAttributeString("value", field.Value);
        writer.WriteEndElement();
    }
    writer.WriteEndElement();
    writer.Flush();
    writer.Close();

    return builder.ToString();
}
Run Code Online (Sandbox Code Playgroud)

我设置了一个编码,但在我创建XmlWriter后,它确实有utf-16编码.我知道这是因为字符串(和我猜想的StringBuilder)是用utf-16编码的,你无法改变它.
那么如何在编码属性设置为"windows-1250"的情况下轻松创建此xml?它甚至不必在这种编码中编码,它只需具有指定的属性.

编辑:它必须在.Net 2.0中,因此不能使用任何新的框架元素.

c# encoding xmlwriter

38
推荐指数
3
解决办法
3万
查看次数

没有Unicode字节顺序标记.无法切换到Unicode

我正在用XSD编写XML验证器.

以下是我所做的,但当验证器到达该行时,while (list.Read())它会给我错误

没有Unicode字节顺序标记.无法切换到Unicode.

任何人都可以帮我解决这个问题吗?

public class Validator
    {
        public void Validate(string xmlString)
        {
            Boolean bRet = true;
            string xmlPath = @"C:\x.xml";
            string xsdPath = @"C:\general.xsd";

            XmlReaderSettings Settings = new XmlReaderSettings();
            Settings.Schemas.Add("", xsdPath);
            Settings.ValidationType = ValidationType.Schema;
            Settings.ValidationEventHandler += 
               new ValidationEventHandler(SettingsValidationEventHandler);

            XmlReader list = XmlReader.Create(xmlPath, Settings);
            //StringBuilder output = new StringBuilder();
            while (list.Read()) 
            {
            }
            //File.WriteAllText(@"D:\Output.xml", output.ToString());
        }
        static void SettingsValidationEventHandler(object sender,
                                                   ValidationEventArgs e)
        {
            if (e.Severity == XmlSeverityType.Warning)
            {
                MessageBox.Show( "WARNING: ");
                MessageBox.Show(e.Message);
            }
            else if (e.Severity == …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd xmlreader character-encoding

38
推荐指数
1
解决办法
4万
查看次数

如何在c#中从XDocument创建缩进的XML字符串?

我有一个XDocument对象,ToString()方法返回XML而没有任何缩进.如何从包含缩进的XML创建字符串?

编辑:我问的是如何创建一个内存字符串而不是写出文件.

编辑:看起来我不小心在这里问了一个技巧问题... ToString()确实返回缩进的XML.

c# linq-to-xml

23
推荐指数
4
解决办法
2万
查看次数

如何显示XML?

    WebRequest req = HttpWebRequest.Create("http://example.com/example");
    WebResponse res = req.GetResponse();
    StreamReader sr = new StreamReader(res.GetResponseStream());
    string str = sr.ReadToEnd();
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(str);
    XmlTextWriter writer = new XmlTextWriter("D://myGameSite//myGames.xml", null);
    writer.Formatting = Formatting.Indented;
    doc.Save(writer);**strong text**
    Response.Write(doc);
Run Code Online (Sandbox Code Playgroud)

现在这段代码工作正常我的意思是它将XML文件保存在myGameSite的根目录中,文件名为myGames,但是当我尝试在浏览器中显示这个XML文件时,你可以在代码中看到,它只是清楚地显示了这个

    System.Xml.XmlDocument
Run Code Online (Sandbox Code Playgroud)

我想在我的浏览器中显示这个XML文件以及标签,我的asp.net和.netframework的版本是2.0所以请我不能使用LINQ :(

c# xml asp.net

1
推荐指数
1
解决办法
2万
查看次数