相关疑难解决方法(0)

决定何时使用XmlDocument vs XmlReader

我正在优化自定义对象 - > XML序列化实用程序,它已完成并正常工作,这不是问题.

它通过将文件加载到XmlDocument对象中,然后递归遍历所有子节点来工作.

我认为也许使用XmlReader而不是XmlDocument加载/解析整个事情会更快,所以我也实现了那个版本.

算法完全相同,我使用包装类来抽象处理一个XmlNode与一个的功能XmlReader.例如,GetChildren方法yield返回子项XmlNode或SubTree XmlReader.

所以我写了一个测试驱动程序来测试这两个版本,并使用一个非平凡的数据集(一个900kb的XML文件,大约有1,350个元素).

但是,使用JetBrains dotTRACE,我发现XmlReader版本实际上比XmlDocument版本慢!XmlReader当我在迭代子节点时,似乎在读取调用中涉及一些重要的处理.

所以我要说这一切:

有什么优势/劣势XmlDocumentXmlReader,和你应该使用什么情况下要么?

我的猜测是,文件大小阈值XmlReader在性能上变得更经济,而且内存密集度更低.但是,该阈值似乎超过1MB.

ReadSubTree每次都在调用处理子节点:

public override IEnumerable<IXmlSourceProvider> GetChildren ()
{
    XmlReader xr = myXmlSource.ReadSubtree ();
    // skip past the current element
    xr.Read ();

    while (xr.Read ())
    {
        if (xr.NodeType != XmlNodeType.Element) continue;
        yield return new XmlReaderXmlSourceProvider (xr);
    }
}
Run Code Online (Sandbox Code Playgroud)

该测试适用于单个级别的许多对象(即宽和浅) …

c# xmldocument xmlreader xml-serialization

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

C#.NET - 存储一些非常小规模的持久性信息的方法?

我有一个需要极少持久存储的应用程序.实际上,我们谈论的是<30个整数.所有应用程序的需求是在下次启动时知道那些整数(并且整数在运行时会发生变化).

数据库对此来说太过分了,但我并不特别想要使用文本文件.

C#是否有任何机制可以在运行之间保持这样的小值?我注意到你可以将东西存储在资源文件和其他一些地方 - 我不知道你是否可以在运行时更改它们.我刚刚学习C#和.NET来完成一份新工作,所以如果这是一个愚蠢的问题,请道歉!

.net c# persistent-storage

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

在C#中解析XML文档

重复:这是使用C#解析xml文件最佳实践的副本和许多其他人(见https://stackoverflow.com/search?q=c%23+parse+xml).请关闭它,不要回答.


如何从C#自下而上解析XML文档?

例如 :

<Employee>
   <Name> Test </name>
   <ID> 123 </ID>
<Employee>
<Company>
    <Name>ABC</company>
    <Email>test@ABC.com</Email>
 </company>
Run Code Online (Sandbox Code Playgroud)

像这些有很多节点..我需要从下往上开始解析,如...解析<company>然后等等.如何在C#中解决这个问题?

c# xml

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

如何在C#中解析非常庞大的XML文件?

我正在使用dblp XML文件.我实际上想要解析dblp.xml文件,并希望提取有用的信息以供我在某个项目中进一步处理.并且该XML文件非常庞大(1.1 GB),我甚至无法打开此文件.

如果您有dblp.xml的C#解析器,请指导我,或者您可以指导我,或者我们如何解析大型xml文件.

c# xml parsing

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

在C#中解析XML文件

在C#中解析XML文件的最快方法是什么?我正在使用.Net 2.0

c# xml

8
推荐指数
1
解决办法
3389
查看次数

使用XmlTextReader

我是一名初学程序员,从C#和Web服务开始.

Service.cs我的Web服务文件中,我创建了一个ReadXMLFile()方法,我尝试读取现有的XML文件,从中获取数据并将其放入我在IService.cs文件中创建的相应属性(DataMembers).

我的问题是我的代码基本上没有做任何事情.我已经尝试过寻找网站和教程,但实际上并没有太多,特别是像我这样的初学者.任何人都知道我应该怎么做,因为我到目前为止所做的事情显然是错误的.

以下是我的ReadXMLFile()方法.

void ReadXMLFile()
{
    XmlTextReader reader = new XmlTextReader("ClassRoll.xml");
    reader.Read();
    while (reader.Read())
    {
        if (reader.Name == "id")
        {
            id = reader.ReadString();
        }
        else if (reader.Name == "firstname")
        {
            link = reader.ReadString();
        }
        else if (reader.Name == "lastname")
        {
            description = reader.ReadString();
        }
        else if (reader.Name == "count")
        {
            description = reader.ReadString();
        }
        else if (reader.Name == "testscore")
        {
            description = reader.ReadString();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的xml文件的一个例子

<classroll>
  <student>
    <id>101010</id>
    <lastname>Smith</lastname> …
Run Code Online (Sandbox Code Playgroud)

c# xml web-services xmltextreader

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

使用C#/ .NET读/写XML

使用C#/ .NET读取/写入XML的最佳功能,实践和/或技术是什么?

.net c# xml

3
推荐指数
2
解决办法
1322
查看次数

解析XML的不同方法

在XML方面,我是初学者.我创建了一个简单的XML文件,并尝试解析它并将值分配给变量.它运作但我使用的方法让我想知道是否有更好的方法,如果你愿意,更优雅,为此任务.有吗?

这是我的XML文件:

<start>
<record>
<var1>hello</var1>
<var2>world</var2>
</record>
<record>
<var1>another</var1>
<var2>one</var2>
</record>
</start>
Run Code Online (Sandbox Code Playgroud)

这是我使用的方法:

string var1 = "", var2 = "";

using(XmlReader r = XmlReader.Create(file))
{
    while(r.Read())
    {
        if (r.MoveToContent() == XmlNodeType.Element)
        {
            if(r.Name == "record")
            {
                var1 = "";
                var2 = "";
            }
            else if(r.Name = "var1")
                var1 = r.ReadElementString();
            else if(r.Name = "var2")
                var2 = r.ReadElementString();
        }
        else if(r.MoveToContent() == XmlNodeType.EndElement && r.Name == "record")
        {
            Console.WriteLine(var1 + " " + var2);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

.net xml parsing

3
推荐指数
2
解决办法
2018
查看次数

获取xml文件中标记之间的数据

我想获取以下XML中的<lat><lng>标记之间的数据:

<viewport>
 <southwest>
  <lat>41.7450495</lat>
  <lng>-87.8859170</lng>
 </southwest>
</viewport>
Run Code Online (Sandbox Code Playgroud)

这是更大的XML的一部分:

<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
 <status>OK</status>
 <result>
  <type>locality</type>
  <type>political</type>
  <formatted_address>Chicago, IL, USA</formatted_address>
  <address_component>
   <long_name>Chicago</long_name>
   <short_name>Chicago</short_name>
   <type>locality</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Cook</long_name>
   <short_name>Cook</short_name>
   <type>administrative_area_level_2</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>Illinois</long_name>
   <short_name>IL</short_name>
   <type>administrative_area_level_1</type>
   <type>political</type>
  </address_component>
  <address_component>
   <long_name>United States</long_name>
   <short_name>US</short_name>
   <type>country</type>
   <type>political</type>
  </address_component>
  <geometry>
   <location>
    <lat>41.8781136</lat>
    <lng>-87.6297982</lng>
   </location>
   <location_type>APPROXIMATE</location_type>
   <viewport>
    <southwest>
     <lat>41.7450495</lat>
     <lng>-87.8859170</lng>
    </southwest>
    <northeast>
     <lat>42.0109012</lat>
     <lng>-87.3736794</lng>
    </northeast>
   </viewport>
   <bounds>
    <southwest>
     <lat>41.6443350</lat>
     <lng>-87.9402669</lng>
    </southwest>
    <northeast>
     <lat>42.0231310</lat>
     <lng>-87.5236609</lng>
    </northeast>
   </bounds>
  </geometry>
 </result>
</GeocodeResponse>
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试使用此代码来解析它:

string url …
Run Code Online (Sandbox Code Playgroud)

c# xml xml-parsing

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

C#读/写XML文件

它应该很简单,但我在将简单的xml文件读入字符串列表时遇到了麻烦.示例xml文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<directorylist>
    <dir>c:\TEST1\</dir>
    <dir>c:\TEST2\</dir>
</directorylist>
Run Code Online (Sandbox Code Playgroud)

我想读一个LIst.你能推荐最好的读/写方式吗?

日Thnx

c# xml linq

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