[英]Using XmlReader to Read XML
使用XmlReader
读取XML文件时遇到一些麻烦。 我可以打开和关闭文件(我认为),但是在解析我需要的信息时,我有点迷失了。 这是我需要解析的文件的位:
<?xml version="1.0" encoding="UTF-8"?>
<database name="Dictionary">
<data>
<Translations>
<Translation UniversalAbbv="Enu" lang="en" localization="US" unicode="0">
<Set>
...
</Set>
<Set>
...
</Set>
<Set>
<CaseSensitive value="0" />
<Enums translate="1">
<Enum_Entry ENUM_H="STOPRUN_STOP" EnumID="0" EnumString="Stop" SetID="160" />
<Enum_Entry ENUM_H="STOPRUN_RUN" EnumID="1" EnumString="Run" SetID="160" />
<Enum_Entry ENUM_H="STOPRUN_HOLD " EnumID="2" EnumString="Hold" SetID="160" />
</Enums>
<IncludeFiles_cs name="CSFile" value="StopRun.cs" />
<IncludeFiles_h name="Header" value="NULL" />
<IncludeFiles_java name="Java" value="NULL" />
<SetID value="160" />
<SetName value="Stop Run" />
<TwoSet ENUM_H="STOPRUN_ENUM_SET" />
</Set>
<Set>
...
</Set>
</Translation>
</Translations>
</data>
</database>
我需要找到EnumID="0"
或EnumID="1"
(或"STOPRUN_STOP"
或"STOPRUN_RUN"
)的位置,并分别拉出"Stop"
或"Run"
字符串。 到目前为止,这是我所拥有的代码:
static class Dictionary
{
static private XmlReader Reader = null;
static public void Open()
{
XML_Generator.Dictionary.Reader = XmlReader.Create(XML_Generator.Program.DictionaryFilename);
}
static public void Close()
{
XML_Generator.Dictionary.Reader.Close();
}
static public void Read()
{
while (Reader.Read())
{
Trace.TraceInformation(XML_Generator.Dictionary.Reader.ReadElementContentAsString()); // <-- This throw an error. :(
}
}
}
我知道数量不多,但是我对如何使用它有点迷茫。 任何帮助,将不胜感激。 谢谢。
这是使用XML Reader读取xml文件的示例
int intCount = 0;
XmlReaderSettings objSettings = new XmlReaderSettings();
objSettings.IgnoreWhitespace = true;
objSettings.IgnoreComments = true;
string booksFile = Server.MapPath("books.xml");
using (XmlReader objReader = XmlReader.Create(booksFile, objSettings))
{
while (objReader.Read())
{
if (objReader.NodeType == XmlNodeType.Element && "Book" == objReader.LocalName)
{
intCount++;
}
if (objReader.NodeType ==XmlNodeType.Text )
{
Response.Write("<BR />" + objReader.Value);
}
}
}
Response.Write(String.Format("<BR /><BR /><BR /><b> Total {0} books.</b>", intCount));
您可能想看看XpathNavigator 。 它的语法非常易于使用,比使用XMLReader轻松得多
获取EnumID =“ 1”项所需要做的就是//Enums/Enum_Entry[@EnumID=1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.