似乎每次我使用XMLReader时,我最终会进行一系列的试验和错误,试图弄清楚我要阅读的内容与我正在阅读的内容和我刚才阅读的相比.我总是把它弄清楚,但是在我多次使用它之后,我似乎并没有牢牢掌握当我调用各种函数时XMLReader实际上在做什么.例如,当我第一次调用Read时,如果它读取元素开始标记,它现在是在元素标记的末尾,还是准备开始读取元素的属性?如果我调用GetAttribute,它是否知道属性的值?如果我此时调用ReadStartElement会发生什么?它会完成读取start元素,还是寻找下一个元素,跳过所有属性?如果我想阅读一些元素怎么办 - 什么' 是尝试读取下一个元素并确定其名称的最佳方法.将Read继续IsStartElement工作,或者IsStartElement将返回有关我刚读过的元素之后的节点的信息吗?
正如您所看到的,我真的不了解XMLReader在读取的各个阶段所处的位置以及各种读取函数对其状态的影响.是否有一些我根本没注意到的简单模式?
这是问题的另一个例子(取自回复):
string input = "<machine code=\"01\">The Terminator" +
"<part code=\"01a\">Right Arm</part>" +
"<part code=\"02\">Left Arm</part>" +
"<part code=\"03\">Big Toe</part>" +
"</machine>";
using (System.IO.StringReader sr = new System.IO.StringReader(input))
{
using (XmlTextReader reader = new XmlTextReader(sr))
{
reader.WhitespaceHandling = WhitespaceHandling.None;
reader.MoveToContent();
while(reader.Read())
{
if (reader.Name.Equals("machine") && (reader.NodeType == XmlNodeType.Element))
{
Console.Write("Machine code {0}: ", reader.GetAttribute("code"));
Console.WriteLine(reader.ReadElementString("machine"));
}
if(reader.Name.Equals("part") && (reader.NodeType == XmlNodeType.Element))
{
Console.Write("Part code {0}: ", reader.GetAttribute("code"));
Console.WriteLine(reader.ReadElementString("part"));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
第一个问题,机器节点被完全跳过.MoveToContent似乎移动到机器元素的内容,导致它永远不会被解析.此外,如果您跳过MoveToContent,则会收到错误:"'Element'是无效的XmlNodeType." 尝试ReadElementString,我无法解释.
接下来的问题是,在读取第一部分元素时,ReadElementString似乎在阅读后将阅读器定位在下一个部分元素的开头.这会导致reader.Read在下一个循环的开头跳过下一个跳转到最后一个part元素的part元素.所以这段代码的最终输出是:
零件代码01a:右臂 …
我正在尝试设计一个函数模板来搜索任何游戏的最佳移动 - 当然这个函数模板的用户必须实现一些游戏特定的功能.我想要做的是用功能模板推广alpha beta搜索算法.
此函数模板的声明如下所示:
template<class GameState, class Move,
class EndGame, class Evaluate, class GetMoves, class MakeMove)
int alphaBetaMax(GameState g, int alpha, int beta, int depthleft);
Run Code Online (Sandbox Code Playgroud)
除其他功能外,该功能还包括:
bool EndGame(g)int Evaluate(g)std::vector<Move> moves = GetMoves(g)Gamestate gnew = MakeMove(g, moves[i])你认为这个函数有很多模板参数吗?有没有办法减少参数的数量?一个想法是使用评估游戏状态或决定游戏是否结束的成员扩展GameState类.但是alpha beta搜索树包含很多Gamestate实例,可能导致不必要的内存需求,因此我喜欢将Gamestate保持在较小的状态.一般来说,功能模板实际上是正确的吗?
我收到链接器错误,表明我没有使用#ifndef和#define.
1> TGALoader.obj:错误LNK2005:"struct TGA tga"(?tga @@ 3UTGA @@ A)已在main.obj中定义1> TGALoader.obj:错误LNK2005:"struct TGAHeader tgaheader"(?tgaheader @@ 3UTGAHeader @@ A)已在main.obj中定义1> TGALoader.obj:错误LNK2005:"unsigned char*uTGAcompare"(?uTGAcompare @@ 3PAEA)已在main.obj中定义1> TGALoader.obj:错误LNK2005:"unsigned char*cTGAcompare"(?cTGAcompare @@ 3PAEA)已在main.obj中定义1> LINK:警告LNK4098:defaultlib'LIBCMTD'与使用其他库冲突; 使用/ NODEFAULTLIB:库
我已经将一个头文件Texture.h和tga.h从nehe opengl教程中包含到我的项目中.我有
#ifndef TGAISCOOL
#define TGAISCOOL
#endif
Run Code Online (Sandbox Code Playgroud)
在我的tga.h文件中.如果我不止一次地包含它,我会从上面粘贴的链接器中获取错误.前两个来自texture.h虽然情况相同.
关于什么是错的任何想法?
我刚刚开始编写Maven插件,并想知道是否有一种常见的方法来修改pom.xml文件中的值,例如更改工件版本号.除了要修改的行之外,我希望保留xml文件中的剩余格式.我即将开始通过Java DOM库手动执行此操作,但是想先检查是否有任何Maven便利类/函数.
谢谢.
我刚刚开始学习如何在python中使用rpy2.我能够制作简单的情节等,但我遇到了R中许多选项使用"."的问题.例如,这是一个有效的R调用:
barplot(t,col = heat.colors(2),names.arg = c("pwn","pwn2"))
其中t是矩阵.
我想在python中使用相同的调用,但它拒绝"." names.arg的一部分.我的理解是在python中你替换了"." 使用"_",所以names_arg例如,但这也不起作用.我知道这是一个基本问题,所以我希望有人见过这个并知道修复.谢谢!
所以我在代码的开头得到时间,运行它,然后得到时间.
struct timeval begin, end;
gettimeofday(&begin, NULL);
//code to time
gettimeofday(&end, NULL);
//get the total number of ms that the code took:
unsigned int t = end.tv_usec - begin.tv_usec;
Run Code Online (Sandbox Code Playgroud)
现在我想以"**代码运行0.007秒"或类似的形式打印出来.
所以有两个问题:
1)t似乎包含6000的订单值,我知道代码没有花6秒钟运行.
2)我怎样才能将t转换为double,因为它是unsigned int?或者是否有更简单的方式以我想要的方式打印输出?
我有以下字符串......
NSString *googleSearchString = @"http://www.google.com/search?q=lyrics+%22Tænder+På+Dig%22+%22Jakob+Sveistrup%22";
Run Code Online (Sandbox Code Playgroud)
请注意,它有一些重音字符.当我尝试将其转换为url时,返回的url为null ...
[NSURL URLWithString:googleSearchString];
Run Code Online (Sandbox Code Playgroud)
所以通常url工作,除非字符串中有重音非英语字符.有关如何处理的任何帮助?
我有一个包含大约40列的数据框,第二列,data [2]包含其余行数据描述的公司名称.但是,这些公司的名称根据年份的不同而不同(2009年的数据为09年,2010年没有).
我希望能够对数据进行子集化,以便我可以同时使用这两年.这是我正在尝试做的一个例子......
subset(data, data[2] == "Company Name 09" | "Company Name", drop = T)
Run Code Online (Sandbox Code Playgroud)
基本上,我在子集函数中使用OR运算符时遇到了困难.
但是,我尝试了其他替代方案:
subset(data, data[[2]] == grep("Company Name", data[[2]]))
Run Code Online (Sandbox Code Playgroud)
也许使用字符串函数有一种更简单的方法吗?
任何想法都会被贬低.
我正在尝试使用C#进行XML序列化时更改根名称.
它总是需要类名,而不是我试图设置的名称.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyTest test = new MyTest();
test.Test = "gog";
List<MyTest> testList = new List<MyTest>()
{
test
};
SerializeToXML(testList);
}
static public void SerializeToXML(List<MyTest> list)
{
XmlSerializer serializer = new XmlSerializer(typeof(List<MyTest>));
TextWriter textWriter = new StreamWriter(@"C:\New folder\test.xml");
serializer.Serialize(textWriter, list);
textWriter.Close();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
[XmlRootAttribute(ElementName …Run Code Online (Sandbox Code Playgroud) 这是一个非常简单的问题,但以下函数原型是什么意思?
int square(int y,size_t*x)
size_t*的意思是什么?我知道size_t是一种数据类型(int> = 0).但是如何阅读附加的*?它是指向x的内存位置的指针吗?总的来说,我遇到了这个问题,如果有人能提供方便的参考,我会很感激.
谢谢大家.我理解指针是什么,但我想我很难理解指针和函数之间的关系.当我看到函数原型定义为int sq(int x, int y),那么我很清楚发生了什么.然而,当我看到类似的东西时int sq( int x, int* y),我不能 - 为了我的生活 - 理解第二个参数的真正含义.在某种程度上,我理解它意味着"传递一个指针",但我不能很好地理解它自己操纵它.