我在互联网上看如何保持从XML数据回车,但我找不到答案,所以我在这里:)
目标是在文件中写入XML数据的内容.因此,如果节点的值包含一些"\ r \n"数据,则软件需要在文件中写入它们以创建新行,但它不会写入,即使有空格:保留.
这是我的测试类:
XElement xRootNode = new XElement("DOCS");
XElement xData = null;
//XNamespace ns = XNamespace.Xml;
//XAttribute spacePreserve = new XAttribute(ns+"space", "preserve");
//xRootNode.Add(spacePreserve);
xData = new XElement("DOC");
xData.Add(new XAttribute("FILENAME", "c:\\titi\\prout.txt"));
xData.Add(new XAttribute("MODE", "APPEND"));
xData.Add("Hi my name is Baptiste\r\nI'm a lazy boy");
xRootNode.Add(xData);
bool result = Tools.writeToFile(xRootNode.ToString());
Run Code Online (Sandbox Code Playgroud)
这是我的流程类:
try
{
XElement xRootNode = XElement.Parse(xmlInputFiles);
String filename = xRootNode.Element(xNodeDoc).Attribute(xAttributeFilename).Value.ToString();
Boolean mode = false;
try
{
mode = xRootNode.Element(xNodeDoc).Attribute(xWriteMode).Value.ToString().ToUpper().Equals(xWriteModeAppend);
}
catch (Exception e)
{
mode = false;
}
String value = …Run Code Online (Sandbox Code Playgroud) 我有一个Log类将日志放在Windows日志和SQL表中.为了优化我的代码,我想只使用一个SqlConnection.
在MSDN中,它说:public static此类型的任何(在Visual Basic中共享)成员都是线程安全的.任何实例成员都不保证是线程安全的.
我的问题是:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
Run Code Online (Sandbox Code Playgroud)
它是线程安全的吗?如果是的话,何时使用Open()和Close()?
如果没有,怎么使用得当SqlConnection?
这是我的完整类代码:
private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
public static long WriteLog(string sSource, string sMessage, int iErrorCode, EventLogEntryType xErrorType)
{
// Windows Logs
if (ConfigParameters.Instance.WindowsLog)
EventLog.WriteEntry(sSource, sMessage, xErrorType, iErrorCode);
// SQL Logs
// TODO
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个webservice,在我的项目中通过webreference引用.
以下是wsdl文件中枚举的说明:
<xs:simpleType name="photoIdType">
<xs:restriction base="xs:string">
<xs:enumeration value="DRV"/>
<!-- drivers license -->
<xs:enumeration value="PAS"/>
<!-- passport -->
<xs:enumeration value="STA"/>
<!-- state ID -->
<xs:enumeration value="GOV"/>
<!-- government id -->
<xs:enumeration value="ALN"/>
<!-- alien id -->
</xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)
当我必须给出这个变量的值时,这是我的方式:
switch (xRootNode.Element(TagsXML.MG_T_SENDER_PHOTO_ID_TYPE).Value)
{
case "ALN":
sendRequest.senderPhotoIdType = photoIdType.ALN;
break;
case "DRV":
sendRequest.senderPhotoIdType = photoIdType.DRV;
break;
case "GOV":
sendRequest.senderPhotoIdType = photoIdType.GOV;
break;
case "PAS":
sendRequest.senderPhotoIdType = photoIdType.PAS;
break;
case "STA":
sendRequest.senderPhotoIdType = photoIdType.STA;
break;
}
Run Code Online (Sandbox Code Playgroud)
就在我调用webservice的方法之前,我检查了我的枚举的值.价值在这里,很好.
但是当我用Fiddler(http数据包分析器)检查Soap请求发送到webservice时,photoIdType节点不在!
你知道这是Visual Studio的一个已知问题吗?你知道为什么没有发送枚举值吗?
如果需要,我可以提供更多信息.
首先,我不知道Stackoverflow是否是发布此类消息的最佳网站,但我不知道这样的其他网站.
为了在C#中正确理解tcp编程,我决定从头开始做所有可能的方法.这是我想知道的(不是正确的顺序: - 简单的一个线程套接字服务器(本文) - 简单的多线程套接字服务器(我不知道如何,导致线程复杂) - 简单的线程套接字服务器(放另一个线程中的客户端管理) - 多线程套接字服务器 - 使用tcpListener - 使用async/Await - 使用任务最终目标是知道如何做最好的tcp服务器,而不只是复制/粘贴来的一些部分,但要正确理解所有的东西.
所以,这是我的第一部分:单线程tcp服务器.
有我的代码,但我不认为有人会纠正一些东西,因为它是MSDN的一个副本:http://msdn.microsoft.com/en-us/library/6y0e13d3( v = vs.110).aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SimpleOneThreadSocket
{
public class ServerSocket
{
private int _iPport = -1;
private static int BUFFER_SIZE = 1024;
private Socket _listener = null;
public ServerSocket(int iPort)
{
// Create a TCP/IP socket.
this._listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// Save the port
this._iPport = …Run Code Online (Sandbox Code Playgroud)