tun*_*nuz 24 .net c# xml comments
我试图用C#读取XML文档,我这样做:
XmlDocument myData = new XmlDocument();
myData.Load("datafile.xml");
Run Code Online (Sandbox Code Playgroud)
无论如何,我有时会在阅读XmlNode.ChildNodes时收到评论.
为了让谁遇到同样的要求,最后我就是这样做的:
/** Validate a file, return a XmlDocument, exclude comments */
private XmlDocument LoadAndValidate( String fileName )
{
// Create XML reader settings
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true; // Exclude comments
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.DTD; // Validation
// Create reader based on settings
XmlReader reader = XmlReader.Create(fileName, settings);
try {
// Will throw exception if document is invalid
XmlDocument document = new XmlDocument();
document.Load(reader);
return document;
} catch (XmlSchemaException) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Tommaso
Mar*_*ers 40
您可以将XmlReaderwith XmlReaderSettings.IgnoreComments设置为true:
XmlReaderSettings readerSettings = new XmlReaderSettings();
readerSettings.IgnoreComments = true;
using (XmlReader reader = XmlReader.Create("input.xml", readerSettings))
{
XmlDocument myData = new XmlDocument();
myData.Load(reader);
// etc...
}
Run Code Online (Sandbox Code Playgroud)
(从发现这里通过搜索XmlDocument ignore comments)
And*_*dre 18
foreach(XmlNode node in nodeList)
if(node.NodeType != XmlNodeType.Comment)
...
Run Code Online (Sandbox Code Playgroud)
您只需在ChildNodes上添加过滤器即可.例如
var children = myNode.ChildNodes.Cast<XmlNode>().Where(n => n.NodeType != XmlNodeType.Comment);
Run Code Online (Sandbox Code Playgroud)
或者,您可以加载XmlDocument传递XmlReader,其设置使得XmlReaderSettings.IgnoreComments为true.
using (var file = File.OpenRead("datafile.xml"))
{
var settings = new XmlReaderSettings() { IgnoreComments = true, IgnoreWhitespace = true };
using (var xmlReader = XmlReader.Create(file, settings))
{
var document = new XmlDocument();
document.Load(xmlReader);
// Process document nodes...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24680 次 |
| 最近记录: |