C# 如何创建虚拟XML结构?
下面的代码需要伪XML,如果(reader.NodeType==//XmlNodeType.Element&&reader.Name.ToLower()==“transmissions”)条件为,则存在C# 如何创建虚拟XML结构?,c#,xml,xml-parsing,xmlnode,C#,Xml,Xml Parsing,Xmlnode,下面的代码需要伪XML,如果(reader.NodeType==//XmlNodeType.Element&&reader.Name.ToLower()==“transmissions”)条件为,则存在 public BusinessEntities.FileParseResult Parse(string FilePath) { FileParseResult _fileParseResult = new FileParseResult();
public BusinessEntities.FileParseResult Parse(string FilePath)
{
FileParseResult _fileParseResult = new FileParseResult();
_fileParseResult.FileParseResultType = FileParseResultType.ValidFileClaim;
Logger.LogMessage(PREPROCESS_FILEPARSER.TRACE_MSG, "****WorkComp.Net : Pre Processor -> Start parsing valid AT XML File *****");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlReader reader = XmlReader.Create(FilePath, settings))
{
try
{
string tranmissionsattr = string.Empty;
string header = string.Empty;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name.ToLower() == "transmissions")
{
for (int i = 0; i < reader.AttributeCount; i++)
{
reader.MoveToAttribute(i);
tranmissionsattr = tranmissionsattr + " " + reader.Name + "=\"" + reader.GetAttribute(i) + "\"";
}
reader.MoveToElement();
}
}
}
}
}
public BusinessEntities.FileParseResult解析(字符串文件路径)
{
FileParseResult _FileParseResult=新建FileParseResult();
_fileParseResult.FileParseResultType=FileParseResultType.ValidFileClaim;
LogMessage(PREPROCESS_FILEPARSER.TRACE_MSG,“*****WorkComp.Net:Pre-Processor->Start-parsing-valid AT-XML File*****”);
XmlReaderSettings设置=新建XmlReaderSettings();
settings.ConformanceLevel=ConformanceLevel.Fragment;
使用(XmlReader=XmlReader.Create(文件路径、设置))
{
尝试
{
string transmissionsattr=string.Empty;
字符串头=string.Empty;
while(reader.Read())
{
if(reader.NodeType==XmlNodeType.Element&&reader.Name.ToLower()==“传输”)
{
for(int i=0;i
那怎么办
<transmissions attribute1="test1" attribute2="test2" />
<transmissions attribute1="test1" attribute2="test2" />
<transmissions attribute1="test1" attribute2="test2" />
<transmissions attribute1="test1" attribute2="test2" />
:)以下是一些测试代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
BusinessEntities be = new BusinessEntities();
be.Parse(FILENAME);
}
}
public class BusinessEntities
{
public enum FileParseResultType
{
ValidFileClaim
}
public class FileParseResult
{
public FileParseResultType FileParseResultType { get; set; }
}
public BusinessEntities.FileParseResult Parse(string FilePath)
{
FileParseResult _fileParseResult = new FileParseResult();
_fileParseResult.FileParseResultType = FileParseResultType.ValidFileClaim;
//Logger.LogMessage(PREPROCESS_FILEPARSER.TRACE_MSG, "****WorkComp.Net : Pre Processor -> Start parsing valid AT XML File *****");
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
string xml = "<?xml version=\"1.0\" ?><transmissions version=\"1.0\" xmlns=\"workcomp.net/wcn2/public\"><transmission><header></header><reports><report><R4>FL</R4><R5></R5>JCN<R15>ClaimTest1</R15></report></reports><trailer recordcount=\"1\"/></transmission></transmissions>";
StringReader sreader = new StringReader(xml);
Console.WriteLine(xml.Substring(195,10));
using (XmlReader reader = XmlReader.Create(sreader, settings))
{
try
{
string tranmissionsattr = string.Empty;
string header = string.Empty;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name.ToLower() == "transmissions")
{
for (int i = 0; i < reader.AttributeCount; i++)
{
reader.MoveToAttribute(i);
tranmissionsattr = tranmissionsattr + " " + reader.Name + "=\"" + reader.GetAttribute(i) + "\"";
}
reader.MoveToElement();
}
}
}
catch (Exception e)
{
string error = e.Message;
}
}
return _fileParseResult;
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.IO;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
BusinessEntities be=新的BusinessEntities();
be.Parse(文件名);
}
}
公共类商业实体
{
公共枚举文件ParseResultType
{
有效分子
}
公共类FileParseResult
{
公共文件ParseResultType文件ParseResultType{get;set;}
}
public BusinessEntities.FileParseResult解析(字符串文件路径)
{
FileParseResult _FileParseResult=新建FileParseResult();
_fileParseResult.FileParseResultType=FileParseResultType.ValidFileClaim;
//LogMessage(PREPROCESS_FILEPARSER.TRACE_MSG,“*****WorkComp.Net:Pre-Processor->Start-parsing-valid AT-XML File*****”);
XmlReaderSettings设置=新建XmlReaderSettings();
settings.ConformanceLevel=ConformanceLevel.Fragment;
字符串xml=“fljcnlaimtest1”;
StringReader sreader=新的StringReader(xml);
Console.WriteLine(xml.Substring(195,10));
使用(XmlReader=XmlReader.Create(sreader,设置))
{
尝试
{
string transmissionsattr=string.Empty;
字符串头=string.Empty;
while(reader.Read())
{
if(reader.NodeType==XmlNodeType.Element&&reader.Name.ToLower()==“传输”)
{
for(int i=0;i
?如果传输是根标签,则不起作用。您只能有一个根标记。@jdweng如果一致性级别设置为fragment(它是),那么它将正常工作。Per“此设置接受顶层具有多个根元素或文本节点的XML数据。”感谢您的响应。字符串xml=“fljcnlaimtest1”;问题是:当我的调试器点击到上面的行时,使用(XmlReader=XmlReader.Create(xml,settings))会给我一个错误,路径中有非法字符。我无法提供XML的物理路径。结束标记具有不可见的非法字符。复制并粘贴此注释中没有不可见字符的标记。