小编ban*_*eek的帖子

如何使用节点 js 在 XML 文件中添加/修改节点

假设我有以下 xml 代码

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<catalog>
  <person>
    <name>John</name>
    <surname>Smith</surname>
  </person>
  <person>
    <name>Abe</name>
    <surname>Lincoln</surname>
  </person>
  <person>
    <name>James</name>
    <surname>Bond</surname>
  </person>
</catalog>
Run Code Online (Sandbox Code Playgroud)

我想添加一个新节点,让我们说以下内容:

<person>
  <name>Tony</name>
  <surname>Stark</surname>
</person>
Run Code Online (Sandbox Code Playgroud)

我如何在节点 js 中做到这一点?我的意思是我有一个文件(确切地说是节点 js express 中的 /routes/index.js),我希望能够添加/修改现有的 xml 文件。我试过fs.writeFile(),但这会写入一个全新的文件,并且fs.appendFile()在最后一个节点之后添加了一个标头(?xml + 编码和东西)和根节点,所以我无法插入它进入目录节点。我也无法摆脱 xml 声明标头。
我一直在使用 .builder() 来做到这一点,它看起来像这样

router.post('/addnode', function (req, res) {

  var obj = {name: "Tony", surname: "Stark"};
  var fs = require('fs');
  var xml2js = require('xml2js');

  var builder = new xml2js.Builder();
  var xml = builder.buildObject(obj);  

  fs.writeFile('public/test.xml', xml, function (err) { …
Run Code Online (Sandbox Code Playgroud)

javascript xml node.js express

5
推荐指数
2
解决办法
1万
查看次数

长时间关闭应用程序时如何处理“没有足够的配额来处理此命令”异常

我有一个可以打开第三方应用程序的软件。为了让他们相互通信,我有一个桥接解决方案(只是一个永远不会显示的假 wpf 窗口),它在彼此之间发送消息并使用简单数据管理 XML 文件。一切正常,直到应用程序打开超过 10-15 分钟(甚至可以处于空闲状态),然后我尝试关闭它 - 然后我的软件因“配额不足异常”而崩溃。当我的软件崩溃时,第 3 方应用程序有时会保持打开状态并仍在运行。

在过去的三天里我一直在寻找解决方案。没有任何帮助。“catch Win32Exception”无法捕获它。更改虚拟内存中的分页文件没有帮助。它可以在具有不同规格的多个工作站上重现 - 每个工作站都有足够的资源。内存/磁盘使用率一点也不高。第 3 方应用程序没有向我的软件发送大量消息,它在关闭时最多发送 1-2 条消息。通信是同步的。我尝试查看发布在这里的 BaseCompatibilityPreferences.HandleDispatcherRequestProcessingFailure: https: //github.com/dotnet/wpf/issues/137 - 无济于事。指向 wpf 窗口的指针不为空。我还检查了线程。

异常详细信息:

System.ComponentModel.Win32Exception
  HResult=0x80004005
  Message=Not enough quota is available to process this command
  Source=WindowsBase
  StackTrace:
   at MS.Win32.UnsafeNativeMethods.PostMessage(HandleRef hwnd, WindowMessage msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndTarget.UpdateWindowSettings(Boolean enableRenderTarget, Nullable`1 channelSet)
   at System.Windows.Interop.HwndTarget.UpdateWindowPos(IntPtr lParam)
   at System.Windows.Interop.HwndTarget.OnWindowPosChanged(IntPtr lParam)
   at System.Windows.Interop.HwndTarget.HandleMessage(WindowMessage msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr …
Run Code Online (Sandbox Code Playgroud)

c# wpf .net-4.7.2

2
推荐指数
1
解决办法
2359
查看次数

标签 统计

.net-4.7.2 ×1

c# ×1

express ×1

javascript ×1

node.js ×1

wpf ×1

xml ×1