PowerShell怎么创建XML对象和文件
发布时间 - 2025-12-30 00:00:00 点击率:次PowerShell创建XML对象和文件应优先使用[xml]类型转换或XmlDocument类,避免字符串拼接;通过Save()方法保存,默认UTF-8编码,需用XmlWriterSettings控制缩进与BOM。
PowerShell 创建 XML 对象和文件非常直接,核心是用 [xml] 类型加速解析或构建,再用 Save() 方法写入磁盘。关键不是“硬拼字符串”,而是利用 .NET 的 XmlDocument 或更轻量的 XmlWriter 来保证格式合法、编码正确。
用 [xml] 类型快速创建简单 XML 对象
适合结构固定、内容不复杂的情况。PowerShell 会自动把符合 XML 格式的字符串转成 XmlDocument 对象:
- 先写一个合法的 XML 字符串(注意用双引号包裹,支持变量插值)
- 强制转换为
[xml]类型,就得到可操作的对象
例如:
```powershell$xmlStr = @"
28
@"
$doc = [xml]$xmlStr
```
之后就能用 $doc.root.person.name.InnerText 读取,或用 $doc.CreateElement("city") 动态添加节点。
用 XmlDocument 新建空 XML 并逐步构建
适合需要动态生成、逻辑判断或循环添加节点的场景。从空文档开始,用标准 DOM 方法逐层添加:
-
New-Object System.Xml.XmlDocument创建空对象 -
CreateElement()和CreateAttribute()创建元素与属性 -
AppendChild()或PrependChild()把节点挂到父节点下
示例(生成带属性的用户列表):
```powershell$doc = New-Object System.Xml.XmlDocument
$root = $doc.CreateElement("users")
$doc.AppendChild($root) | Out-Null
$user = $doc.CreateElement("user")
$idAttr = $doc.CreateAttribute("id")
$idAttr.Value = "101"
$user.SetAttributeNode($idAttr)
$name = $doc.CreateElement("name")
$name.InnerText = "李四"
$user.AppendChild($name) | Out-Null
$root.AppendChild($user) | Out-Null
```
保存 XML 到文件(注意编码和缩进)
直接调用 Save() 方法最稳妥,它默认用 UTF-8 编码并自动处理声明和换行:
-
$doc.Save("C:\data\output.xml")—— 最简写法 - 如需控制缩进(让文件可读),先配置
XmlWr
iterSettings
带缩进的保存方式:
```powershell$settings = New-Object System.Xml.XmlWriterSettings
$settings.Indent = $true
$settings.IndentChars = " "
$settings.Encoding = [System.Text.UTF8Encoding]::new($false)
$writer = [System.Xml.XmlWriter]::Create("C:\data\pretty.xml", $settings)
$doc.WriteTo($writer)
$writer.Close()
```
避免常见坑
实际用时容易踩几个点:
- 别用字符串拼接 +
Out-File写 XML —— 容易缺闭合标签、编码错乱、特殊字符(如&)没转义 -
[xml]"&"会失败,必须写成"&"或改用CreateTextNode() - 保存路径不存在时
Save()会报错,建议提前用Test-Path -Path $dir -PathType Container检查目录 - 如果 XML 中含中文,确保
XmlWriterSettings.Encoding明确设为 UTF-8(且$false参数禁用 BOM,避免某些程序读取异常)
基本上就这些。用好 [xml] 类型和 XmlDocument,既能快速原型,也能写出健壮、可维护的 XML 生成脚本。
# node
# 编码
# app
# ai
# .net
# Object
# NULL
# xml
# 字符串
# 循环
# 类型转换
# 对象
# dom
# bom
# 几个
# 也能
# 设为
# 不存在
# 再用
# 报错
# 如需
# 转换为
# 既能
# 转成
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
html5的keygen标签为什么废弃_替代方案说明【解答】
如何自定义建站之星模板颜色并下载新样式?
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel模型关联查询教程_Laravel Eloquent一对多关联写法
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
IOS倒计时设置UIButton标题title的抖动问题
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出
中山网站制作网页,中山新生登记系统登记流程?
详解jQuery中的事件
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
如何在云主机上快速搭建网站?
Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Windows Hello人脸识别突然无法使用
如何用VPS主机快速搭建个人网站?
Laravel Docker环境搭建教程_Laravel Sail使用指南
活动邀请函制作网站有哪些,活动邀请函文案?
nginx修改上传文件大小限制的方法
如何有效防御Web建站篡改攻击?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Laravel如何配置任务调度?(Cron Job示例)
小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
香港服务器部署网站为何提示未备案?
手机软键盘弹出时影响布局的解决方法
大型企业网站制作流程,做网站需要注册公司吗?
详解Android中Activity的四大启动模式实验简述
Laravel怎么生成URL_Laravel路由命名与URL生成函数详解
如何快速搭建高效香港服务器网站?
详解阿里云nginx服务器多站点的配置
Laravel怎么在Controller之外的地方验证数据
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何快速生成可下载的建站源码工具?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
个人摄影网站制作流程,摄影爱好者都去什么网站?
C#如何调用原生C++ COM对象详解
Laravel如何处理表单验证?(Requests代码示例)
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
如何在Tomcat中配置并部署网站项目?
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法


iterSettings