我有一个XML文件,我将循环遍历节点并获取属性的值。
但是除了属性值,我还在输出中得到一些符号(矩形框)。如果我尝试删除空间 在标签之间然后很好。
在下面的XML中,我得到了标题的innertext。
<catalog>
<book id="bk101">
<details>
<title>XML Developer's Guide</title>
</details>
</book>
</catalog>
如果我的输入是这样的话,那很好:
<catalog>
<book id="bk101">
<details><title>XML Developer's Guide</title></details>
</book>
</catalog>
我正在使用C#
foreach (XmlNode catalogid in Xmlcontent.GetElementsByTagName("catalog"))
{
foreach (XmlNode bookid in catalogid)
{
foreach (XmlNode titleid in bookid)
{
string booktitle = titleid.InnerText.ToString();
}
}
}
请建议我如何忽略输出中的空格和新行。
答案 0 :(得分:1)
您可以尝试使用基于PreserveWhitespace
属性
XmlDocument doc = new XmlDocument();
....
....
doc.PreserveWhitespace = false;
链接:http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.preservewhitespace.aspx
答案 1 :(得分:1)
您是否仅限于使用.Net 2.0?如果是这样,请忽略以下内容。
如果您可以使用.Net 3.5,那么以下Linq-To-Xml将适合您。
XElement root = XElement.Load(file);
var catalogs = root.Descendants("catalog");
var books = catalogs.SelectMany(c =>
c.Descendants("book").Select(book => new
{
Id = book.Attribute("id").Value,
Title = book.Descendants("title").First().Value
}))
//.OrderBy(b => b.Title) // sort by title or id if you'd like.
.ToArray();