我需要在我们的构建和部署过程中修改某些XML文件,并可能生成XML,该过程在ant上运行.我可能需要做的例子是根据特定属性的值消除某些元素,更改属性值,添加属性以及添加所有新元素.我非常熟悉通过Java中的DOM来实现这一点,并且如果可能的话,我想要一些与ant类似的东西.
我可以使用任何好的建议的第三方蚂蚁任务?
我在C#中有一个简单的客户端和服务器.目标是客户端将XML文档发送到服务器,然后服务器应该使用不同的XML文档进行响应.当我尝试接收与XMLDocument.load方法(的NetworkStream)输入/请求XML服务器阻塞.
服务器:
TcpListener t = new TcpListener(IPAddress.Any, 4444);
t.Start();
TcpClient c = t.AcceptTcpClient();
NetworkStream s = c.GetStream();
XmlDocument req = new XmlDocument();
req.Load(s);
string respString = "<response><data>17</data></response>";
XmlDocument resp = new XmlDocument();
resp.LoadXml(respString);
resp.Save(s);
Run Code Online (Sandbox Code Playgroud)
客户:
TcpClient t = new TcpClient("localhost", 4444);
NetworkStream s = t.GetStream();
string reqStr = "<request><parameters><param>7</param><param>15</param></parameters></request>";
XmlDocument req = new XmlDocument();
req.LoadXml(reqStr);
req.Save(s);
XmlDocument resp = new XmlDocument();
resp.Load(s);
Console.WriteLine(resp.OuterXml);
Run Code Online (Sandbox Code Playgroud)
在将请求XmlDocument保存到流中之后,我尝试在客户端中添加Flush(),但这似乎没有帮助.最初我试过让服务器读取从客户端到MemoryStream的所有输入,但后来我发现无法向服务器表明所有输入都是在没有断开连接的情况下完成的,这意味着客户端无法阅读其输入.
我可以使用netcat从文件中将XML输入发送到服务器,一切正常.无论我在服务器中使用XmlDocument.Load(NetworkStream),还是将所有输入读入MemoryStream,这都有效.netcat在这种情况下做的是什么,我没有在我的C#客户端做什么,我怎么用C#做呢?我应该采用不同的方式吗?
我有两个类,每个类需要一个彼此的实例来运行.通常,如果一个对象需要运行另一个对象,我喜欢在构造函数中传递它.但是在这种情况下我不能这样做,因为一个对象必须在另一个之前被实例化,因此第二个对象不存在被传递给第一个对象的构造函数.
我可以通过将第一个对象传递给第二个对象的构造函数来解决这个问题,然后在第一个对象上调用setter将第二个对象传递给它,但这看起来有点笨重,我想知道是否有更好的方法:
backend = new Backend();
panel = new Panel(backend);
backend.setPanel();
Run Code Online (Sandbox Code Playgroud)
我从未对MVC进行任何研究; 我想我在这里处理模型(后端),以及视图或控制器(Panel).我可以从MVC获得任何见解吗?