c# - 使用 xmlReader 读取格式正确且有效的 xml 的示例

标签 c# .net xml dtd xmlreader

我正在寻找一些使用 c# 的 XmlReader 读取格式正确且有效的 xml 文件(附加了外部 dtd)的好例子

用谷歌搜索并翻阅了书籍,但找不到很好且解释清楚的示例。

这是 XML 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Catalog SYSTEM "marketplace_feed_v2.dtd">
<Catalog>
<Category>
<Name>Arts &amp; Entertainment</Name>
<Site>
<Id>ABC CORP</Id>
<PopularityRank>1</PopularityRank>
<Title><![CDATA[Some Description]]></Title>
<Description><![CDATA[Don't Have A Website? Create A Money Making Website]]></Description>
<HasRecurringProducts>true</HasRecurringProducts>
<Gravity>432.74</Gravity>
<PercentPerSale>75.0</PercentPerSale>
<PercentPerRebill>45.0</PercentPerRebill>
<AverageEarningsPerSale>28.14599</AverageEarningsPerSale>
<InitialEarningsPerSale>25.3445</InitialEarningsPerSale>
<TotalRebillAmt>28.55413</TotalRebillAmt>
<Referred>95.0</Referred>
<Commission>75</Commission>
<ActivateDate>2009-06-29</ActivateDate>
</Site>
</Categoty>
<Category><Site>....</Site></Category></Catalog>

这是 DTD 文件:

<!ELEMENT Catalog ( Category* ) >
<!ELEMENT Category ( Name, Site*, Category* ) >
<!ELEMENT Commission ( #PCDATA ) >
<!ELEMENT Description ( #PCDATA ) >
<!ELEMENT InitialEarningsPerSale ( #PCDATA ) >
<!ELEMENT AverageEarningsPerSale ( #PCDATA ) >
<!ELEMENT TotalRebillAmt ( #PCDATA ) >
<!ELEMENT HasRecurringProducts ( #PCDATA ) >
<!ELEMENT Gravity ( #PCDATA ) >
<!ELEMENT Id ( #PCDATA ) >
<!ELEMENT Name ( #PCDATA ) >
<!ELEMENT PercentPerSale ( #PCDATA ) >
<!ELEMENT PercentPerRebill ( #PCDATA ) >
<!ELEMENT PopularityRank ( #PCDATA ) >
<!ELEMENT ActivateDate ( #PCDATA ) >
<!ELEMENT Site ( Commission? | Site+ | InitialEarningsPerSale? | AverageEarningsPerSale? | TotalRebillAmt? | Gravity? | Id+ | PercentPerSale? | PercentPerRebill? | PopularityRank+ | Title+ | HasRecurringProducts | ActivateDate? )* >
<!ELEMENT Title ( #PCDATA ) >

谁能帮我举个例子??

最佳答案

发现XmlReader是只读和只进的。 所以用这个

StreamReader stream = new StreamReader(filePath);
XmlReader reader = XmlReader.Create(stream, settings);
        while (reader.Read())
        {
            reader.MoveToContent();
            // Parse the file and display each of the nodes.
            while (reader.Read())
            {
                reader.MoveToElement();
                if (reader.Name.Equals("Category") && reader.NodeType != XmlNodeType.EndElement)
                {
                    Response.Write("<b>" + reader.Name + "</b>" + "<br/>");
                }
                else if (reader.Name.Equals("Name") && reader.NodeType != XmlNodeType.EndElement)
                {
                    Response.Write("<span style='color:#1884A5'>" + reader.Name + "</span>" + " : ");
                    Response.Write(reader.ReadElementString() + "<br/>");
                }
         }

如果有人有更好的例子...我将不胜感激..

关于c# - 使用 xmlReader 读取格式正确且有效的 xml 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339352/

相关文章:

c# - 递归比较两个对象数组

c# - 在 C# 中检查一个 VB.NET 对象是否为 null 会产生意外的编译错误

python - 从 MediaWiki 的 API 维基文本中提取 Python 中的模板参数

java - Spring找不到bean xml配置文件: "Failed to import bean definitions from relative location"

c# - 为什么这个无效的文件路径//有效?

c# - 是否有类似于 uTorrent 中的完成图的 .NET 控件?

c# - "where"在 C# 类声明中意味着什么?

c# - Windows 服务总线向 MSMQ 添加了什么?

java - 解析映射器 XML 时出错。原因 : java. lang.NullPointerException

C# XPath id() 不工作?