我正在构建一个需要运行XML feed的应用程序,但是我在获取某些元素方面遇到了一些麻烦.
我正在使用Twitter提要并想要浏览所有<item>元素.我可以很好地连接并从feed中获取内容但我无法弄清楚item当我循环时如何只选择元素reader.Read();.
谢谢你的帮助!
我正在尝试从提要中获取未回答问题的列表,但在阅读时遇到问题。
const string RECENT_QUESTIONS = "https://stackoverflow.com/feeds";
XmlTextReader reader;
XmlDocument doc;
// Load the feed in
reader = new XmlTextReader(RECENT_QUESTIONS);
//reader.MoveToContent();
// Add the feed to the document
doc = new XmlDocument();
doc.Load(reader);
// Get the <feed> element
XmlNodeList feed = doc.GetElementsByTagName("feed");
// Loop through each item under feed and add to entries
IEnumerator ienum = feed.GetEnumerator();
List<XmlNode> entries = new List<XmlNode>();
while (ienum.MoveNext())
{
XmlNode node = (XmlNode)ienum.Current;
if (node.Name == "entry")
{
entries.Add(node);
}
}
// Send …Run Code Online (Sandbox Code Playgroud) 我需要能够通过查看标题或类似的东西(不下载它)来判断链接(URL)是指向XML文件(RSS提要)还是常规HTML文件
对我有什么好建议吗?:)
谢谢!Roey
嗨,我想复制一个xml文件,并插入一个特定的元素locaiton更多的元素; 这样做的最好和最简单的方法是什么.我可以使用xmlReader读取元素并逐个引用每个类型 - 我有一些问题,但除此之外,我认为太过分工作可以做得更好.在下面的示例中,我将xml作为默认定义,需要以相同的格式创建一个新的xml,并将新值插入到sheet1中 - 但是在现有行之后,并对sheet2执行相同操作.
<book>
<Sheet ss:name="Sheet1">
<Table >
<Row >
<Cell/>
<Cell>
Title Name
</Cell>
<Cell >
Title Description
</Cell>
</Row>
</Sheet>
<a/>
<b/>
<Sheet ss:name="Sheet2">
<Table >
<Row >
<Cell/>
<Cell>
Title Name
</Cell>
<Cell >
Title Description
</Cell>
</Row>
</Sheet>
</book>
Run Code Online (Sandbox Code Playgroud) 我对解析XML文件相对较新,并且正在尝试使用XMLReader读取大型XML文件.
<?xml version="1.0" encoding="UTF-8"?>
<ShowVehicleRemarketing environment="Production" lang="en-CA" release="8.1-Lite" xsi:schemaLocation="http://www.starstandards.org/STAR /STAR/Rev4.2.4/BODs/Standalone/ShowVehicleRemarketing.xsd">
<ApplicationArea>
<Sender>
<Component>Component</Component>
<Task>Task</Task>
<ReferenceId>w5/cron</ReferenceId>
<CreatorNameCode>CreatorNameCode</CreatorNameCode>
<SenderNameCode>SenderNameCode</SenderNameCode>
<SenderURI>http://www.example.com</SenderURI>
<Language>en-CA</Language>
<ServiceId>ServiceId</ServiceId>
</Sender>
<CreationDateTime>CreationDateTime</CreationDateTime>
<Destination>
<DestinationNameCode>example</DestinationNameCode>
</Destination>
</ApplicationArea>
...
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
ErrorException [警告]:XMLReader :: read()[xmlreader.read]:compress.zlib:// D:/WebDev/example/local/public/../upload/example.xml.gz:2:名称空间错误:未定义ShowVehicleRemarketing上schemaLocation的命名空间前缀xsi
我一直在搜索并找不到有关使用XMLReader读取带有命名空间的XML文件的更多有用信息 - 我如何定义命名空间,如果这实际上是我需要做什么...帮助不大?链接到相关资源?
我应该做的是:
1)读取一个巨大的(700MB~1000万个元素)XML文件;
2)解析保存顺序 ;
3)用SQL插入语句创建一个文本(一个或多个)文件,将其批量加载到DB上;
4)编写关系元组并用XML写回.
我在这里交换一些关于最佳(==快速快速...)方式的想法来做到这一点.我将使用C#4.0和SQL Server 2008.
我相信XmlTextReader是一个良好的开端.但我不知道它是否可以处理如此庞大的文件.是否在实例化时加载所有文件或仅保存内存中的实际读取行?我想我可以做一个while(reader.Read()),这应该没问题.
编写文本文件的最佳方法是什么?因为我应该保留XML的顺序(采用一些编号模式),我将不得不在内存中保存树的某些部分以进行计算等...我应该使用stringbuilder进行迭代吗?
我将有两个场景:一个是每个节点(元素,属性或文本)将在同一个表中(即,将是同一个对象),另一个场景是每种类型的节点(只有这三种类型,没有评论等) ..)我将在DB中有一个表和一个表示该实体的类.
我的最后一个具体问题是DataSet有多好ds.WriteXml?它会处理10M元组吗?也许最好从数据库中提取块并使用XmlWriter ......我真的不知道.
我正在测试所有这些东西...但我决定发布这个问题来倾诉你们,跳跃你的专业知识可以帮助我更正确,更快地完成这些事情.
提前致谢,
佩德罗杜索
我是xml的新手,我不知道如何从xml文件中读取/获取值:
<?xml version="1.0" encoding="utf-8" ?>
<Jeopardy>
<category name = 'People in Computing'>
<first points = '100' answer = 'Alan Turing'>Known as the questioner of the human mind, this man is known for helping tell humans and computers apart.</first>
<second points = '200' answer = 'Grace Hopper'>This female pioneer of the COBOL computer programming language was an Admiral in the US Navy.</second>
<third points = '300' answer = 'Tim Berners-Lee'>Called the father of the world wide web, this man is the …Run Code Online (Sandbox Code Playgroud) 我一直在使用XDocument结合LINQ to XML来加载xml文件并填充我的类.
但现在我的任务是确保我的程序可以处理所有大小的XML文档,这意味着我需要使用XML Reader,此时我无法理解操纵XMLReader来填充我的类.
目前我有以下类填充:
public class DataRecord
{
private List<Fields> field = new List<Fields>();
public string ID { get; set; }
public string TotalLength { get; set; }
public List<Fields> MyProperty
{
get { return field; }
set { field = value; }
}
}
internal class Fields
{
public string name { get; set; }
public string startByte { get; set; }
public string length { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在尝试切换语句来强制执行xmlreader以提供来自我的数据来填充类.例如:
using (XmlReader reader = XmlReader.Create(filename)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试从[此URL(加载相当长的时间)] [1]中获取以下节点的值。我感兴趣的元素是:
title, g:price and g:gtin
Run Code Online (Sandbox Code Playgroud)
XML开始如下:
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
<channel>
<title>PhotoSpecialist.de</title>
<link>http://www.photospecialist.de</link>
<description/>
<item>
<g:id>BEN107C</g:id>
<title>Benbo Trekker Mk3 + Kugelkopf + Tasche</title>
<description>
Benbo Trekker Mk3 + Kugelkopf + Tasche Das Benbo Trekker Mk3 ist eine leichte Variante des beliebten Benbo 1. Sein geringes Gewicht macht das Trekker Mk3 zum idealen Stativ, wenn Sie viel draußen fotografieren und viel unterwegs sind. Sollten Sie in eine Situation kommen, in der maximale Stabilität zählt, verfügt das Benbo Trekker Mk3 über einen …Run Code Online (Sandbox Code Playgroud) 当在XML中流式传输到XmlReader中时,我遇到了内存不足异常!查看内存分析器,我们可以看到它正在调用StringBuilder.Append一遍又一遍,导致大量128KB缓冲区填充了所有内存。
这与“流式传输”完全相反。它不应加载一个以上的4KB缓冲区。