我试图用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;
} …Run Code Online (Sandbox Code Playgroud) 我想读取一个 xml 字符串而忽略标题和注释。
忽略评论很简单,我在这里找到了解决方案。但我没有找到任何解决方案来忽略标题。
让我举个例子吧:
考虑这个xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Some comments -->
<Tag Attribute="3">
...
</Tag>
Run Code Online (Sandbox Code Playgroud)
我想将 xml 读取到一个字符串中,只获取元素“标签”和其他元素,但没有“xml 版本”和注释。
元素“标签”只是一个例子。可能存在许多其他人。
所以,我只想要这个:
<Tag Attribute="3">
...
</Tag>
Run Code Online (Sandbox Code Playgroud)
我到目前为止的代码:
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Some comments -->
<Tag Attribute="3">
...
</Tag>
Run Code Online (Sandbox Code Playgroud)
我没有在 XmlReaderSettings 上找到任何东西来做到这一点。
我是否需要逐个节点地选择我想要的节点?这个设置不存在?
编辑 1: 只是为了恢复我的问题。我需要在 WebService 的 CDATA 中使用 xml 的内容。当我发送评论或 xml 版本时,我收到了 xml 部分的特定错误。所以我假设当我阅读没有版本、标题和评论的 xml 时,我会很高兴。