美好的一天,
我试图做的一般是将xml转换为xhtml。我需要xhtml才能创建一个epub
输入是xml。用户想要的是在程序中插入xml,输出是xhtml文件。有适当的布局。
所以我在下面的代码中尝试做的是检查节点名称。为了让程序知道要使用什么html标签。
在xml文件中有一个Title元素。所以在我的程序中。当节点为Title时,它将写<h1>
。
我有来自microsoft的这个样本xml
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
我想要做的是获取循环中的所有节点名称
strExpression = "/bookstore";
// Select the node and place the results in an iterator.
NodeIter = nav.Select(strExpression);
//Iterate through the results showing the element value.
while (NodeIter.MoveNext())
{
Console.WriteLine("Book Title: " + NodeIter.Current.Value);
};
答案 0 :(得分:0)
如果您希望获得给定Xml
的所有节点名称,您可以直接执行此操作。
我更喜欢将Linq
用于Xml
。
XDocument doc = XDocument.Parse(input);
var nodenames = doc.Descendants() // Read all descendants
.Select(x=>x.Name.LocalName) // Look for node name.
.ToList();
现在,您可以通过循环nodenames
来访问元素。
foreach(nodenames中的var名称) { Console.WriteLine(名); //访问此处的名称。 }
选中此Demo
答案 1 :(得分:0)
显然,您使用XPathNavigator
。以下是演示其使用的代码
var doc = new XPathDocument("test.xml");
var nav = doc.CreateNavigator();
var iter = nav.Select("//*");
while (iter.MoveNext())
{
Console.WriteLine(iter.Current.LocalName);
}
//*
xpath表达式检索所有后代节点。